Skip to content
Snippets Groups Projects
test_nystromtf.py 2.45 KiB
Newer Older
  • Learn to ignore specific revisions
  • Luc Giffon's avatar
    Luc Giffon committed
    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()