Skip to content
Snippets Groups Projects
Commit 5a9d8fa3 authored by Luc Giffon's avatar Luc Giffon
Browse files

add sigmoid kernel + test

parent 7cde27a7
No related branches found
No related tags found
No related merge requests found
......@@ -59,3 +59,8 @@ def tf_chi_square_CPD_exp(X, Y, gamma):
K = tf_chi_square_CPD(X, Y)
K *= gamma
return tf.exp(K)
def tf_sigmoid_kernel(X, Y, gamma, constant):
K = gamma * tf.matmul(X, tf.transpose(Y)) + constant
return tf.tanh(K)
\ No newline at end of file
import unittest
import tensorflow as tf
import numpy as np
from sklearn.metrics.pairwise import rbf_kernel, chi2_kernel, additive_chi2_kernel
from sklearn.metrics.pairwise import rbf_kernel, chi2_kernel, additive_chi2_kernel, sigmoid_kernel
import skluc.mldatasets as dataset
from skluc.tensorflow_.kernel import tf_rbf_kernel, tf_chi_square_CPD_exp, tf_chi_square_CPD
from skluc.tensorflow_.kernel import tf_rbf_kernel, tf_chi_square_CPD_exp, tf_chi_square_CPD, tf_sigmoid_kernel
class TestKernel(unittest.TestCase):
......@@ -87,6 +87,27 @@ class TestKernel(unittest.TestCase):
difference_chi_square_cpd_exp_kernel = np.linalg.norm(expected_chi_square_cpd_exp_kernel - obtained_chi_square_cpd_exp_kernel) / (self.val_size)
self.assertAlmostEqual(difference_chi_square_cpd_exp_kernel, 0, delta=1e-5)
def test_tf_sigmoid_kernel(self):
gamma = 1/self.val_size
const = 1
expected_sigmoid_kernel = sigmoid_kernel(self.X_val, self.X_val, gamma=gamma, coef0=const)
obtained_sigmoid_kernel = tf_sigmoid_kernel(self.X_val, self.X_val, gamma=gamma, constant=const).eval()
difference_sigmoid_kernel = expected_sigmoid_kernel - obtained_sigmoid_kernel
norm_of_difference = np.linalg.norm(difference_sigmoid_kernel) / (self.val_size**2)
self.assertAlmostEqual(norm_of_difference, 0, delta=1e-5)
example1 = self.X_val[0].reshape((1, -1))
example2 = self.X_val[1].reshape((1, -1))
expected_sigmoid_kernel = sigmoid_kernel(example1, example2, gamma=gamma, coef0=const)
obtained_sigmoid_kernel = tf_sigmoid_kernel(example1, example2, gamma=gamma, constant=const).eval()
difference_sigmoid_kernel = np.linalg.norm(expected_sigmoid_kernel - obtained_sigmoid_kernel)
self.assertAlmostEqual(difference_sigmoid_kernel, 0, delta=1e-5)
expected_sigmoid_kernel = sigmoid_kernel(example1, self.X_val, gamma=gamma, coef0=const)
obtained_sigmoid_kernel = tf_sigmoid_kernel(example1, self.X_val, gamma=gamma, constant=const).eval()
difference_sigmoid_kernel = np.linalg.norm(expected_sigmoid_kernel - obtained_sigmoid_kernel) / (self.val_size)
self.assertAlmostEqual(difference_sigmoid_kernel, 0, delta=1e-5)
def tearDown(self):
self.sess.close()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment