예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
 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")
예제 #4
0
 def test_undefined_sigmoid(self):
     self.assertRaises(NotImplementedError,
                       lambda x: Function("sigmoid", sig_func=x),
                       "foo")