def setUp(self): self.bias = Function('bias') self.identity = Function('identity') self.degree = 2 # polynomial degree self.poly = Function('polynomial', degree=self.degree) self.poly_derivative = self.poly.derivative() self.mu = 3 self.std_dev = 4 self.standard_gaussian = Function('gaussian') self.gaussian = Function('gaussian', mu=self.mu, sigma=self.std_dev) self.gaussian_derivative = self.gaussian.derivative() self.logistic_sigmoid = Function('sigmoid', mu=self.mu, sigma=self.std_dev, sig_func='logistic') self.logistic_sigmoid_derivative = self.logistic_sigmoid.derivative() self.tanh_sigmoid = Function('sigmoid', mu=self.mu, sigma=self.std_dev, sig_func='tanh') self.tanh_sigmoid_derivative = self.tanh_sigmoid.derivative() self.test_points = range(10)
def test_custom_function(self): """ Define a custom sin function, which is the unique solution to f'' = -f, f(0) = 0, f'(0) = 1 """ f = Function(func_type="sin", func=lambda j: math.sin(j)) f_prime = f.derivative() f_prime_prime = f.derivative().derivative() self.assertEqual(str(f), "Sin function") self.assertEqual(f(0), 0) self.assertAlmostEqual(f_prime(0), 1, places=4) for x in self.test_points: self.assertAlmostEqual(f(x), -f_prime_prime(x), places=4)
def test_prints(self): """ Tests the __repr__ functions """ self.assertEqual(str(self.logistic_sigmoid), "Sigmoid function") self.assertEqual(str(Function(func=lambda j: j)), "Custom function")
def test_undefined_sigmoid(self): self.assertRaises(NotImplementedError, lambda x: Function("sigmoid", sig_func=x), "foo")