예제 #1
0
    def test_deriv(self):
        vars = np.arange(-100, 100, 2.5)
        test_fcns = [
            TanSig(),
            PureLin(),
            LogSig(),
            HardLim(),
            HardLims(),
            SatLin(),
            SatLins(),
            SatLinPrm(1, 0, 1),
            SatLinPrm(1, -1, 1)
        ]

        def diff(f, x, h=1E-6):
            x1 = np.array([x - h])
            x2 = np.array([x])
            r = (f(x2)[0] - f(x1)[0]) / h
            return r

        for test_fcn in test_fcns:
            for var in vars:
                m = diff(test_fcn, var)
                v = test_fcn(np.array([var]))
                t = test_fcn.deriv(np.array([var]), v)[0]
                self.assertAlmostEqual(m, t, 5)
예제 #2
0
 def test_logsig(self):
     test_fcn = LogSig()
     vars = [-2.5, -0.5, 0.0, 0.1, 3.0]
     from math import exp
     model = lambda x: 1 / (1 + exp(-x))
     m_res = map(model, vars)
     t_res = test_fcn(np.array(vars)).tolist()
     for m, t in zip(m_res, t_res):
         self.assertEqual(m, t)
예제 #3
0
    def test_props(self):
        test_fcns = [
            TanSig(),
            PureLin(),
            LogSig(),
            HardLim(),
            HardLims(),
            Competitive(),
            SatLin(),
            SatLins()
        ]
        vars = [-1e50, -2.5, -0.5, 0.0, 0.1, 3.0, 1e50]
        for test_fcn in test_fcns:
            self.assertEqual(test_fcn.out_minmax[1] >= test_fcn.out_minmax[0],
                             True)
            self.assertEqual(test_fcn.inp_active[1] >= test_fcn.inp_active[0],
                             True)

            for v in vars:
                r = test_fcn(np.array([v]))
                self.assertEqual(
                    test_fcn.out_minmax[0] <= r <= test_fcn.out_minmax[1],
                    True)