Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import unittest
import tensorflow as tf
import numpy as np
from sklearn.metrics.pairwise import rbf_kernel
import skluc.mldatasets as dataset
from main.nystrom.nystrom_approx import tf_rbf_kernel
class TestNystrom(unittest.TestCase):
def setUp(self):
mnist = dataset.MnistDataset()
mnist = mnist.load()
X_train, Y_train = mnist["train"]
X_train = np.array(X_train / 255)
X_test, Y_test = mnist["test"]
X_test = np.array(X_test / 255)
X_train = X_train.astype(np.float32)
permut = np.random.permutation(X_train.shape[0])
val_size = 5000
X_val = X_train[permut[:val_size]]
X_train = X_train[permut[val_size:]]
Y_val = Y_train[permut[:val_size]]
Y_train = Y_train[permut[val_size:]]
X_test = X_test.astype(np.float32)
Y_train = Y_train.astype(np.float32)
Y_test = Y_test.astype(np.float32)
self.X_val = X_val
self.Y_val = Y_val
self.X_train = X_train
self.Y_train = Y_train
self.X_test = X_test
self.Y_test = Y_test
# todo retirer ça
self.X_val = self.X_val[:100]
self.sess = tf.InteractiveSession()
def test_tf_rbf_kernel(self):
gamma = 0.01
expected_rbf_kernel = rbf_kernel(self.X_val, self.X_val, gamma=gamma)
obtained_rbf_kernel = tf_rbf_kernel(self.X_val, self.X_val, gamma=gamma).eval()
difference_rbf_kernel = np.linalg.norm(expected_rbf_kernel - obtained_rbf_kernel)
self.assertAlmostEqual(difference_rbf_kernel, 0, delta=1e-5)
example1 = self.X_val[0].reshape((1, -1))
example2 = self.X_val[1].reshape((1, -1))
expected_rbf_kernel_value = rbf_kernel(example1, example2, gamma=gamma)
obtained_rbf_kernel_value = tf_rbf_kernel(example1, example2, gamma=gamma).eval()
difference_rbf_kernel_value = np.linalg.norm(expected_rbf_kernel_value - obtained_rbf_kernel_value)
self.assertAlmostEqual(difference_rbf_kernel_value, 0, delta=1e-5)
expected_rbf_kernel_vector = rbf_kernel(example1, self.X_val, gamma=gamma)
obtained_rbf_kernel_vector = tf_rbf_kernel(example1, self.X_val, gamma=gamma).eval()
difference_rbf_kernel_vector = np.linalg.norm(expected_rbf_kernel_vector - obtained_rbf_kernel_vector)
self.assertAlmostEqual(difference_rbf_kernel_vector, 0, delta=1e-5)
def tearDown(self):
self.sess.close()
if __name__ == '__main__':
unittest.main()