예제 #1
0
    def test_numeric_gradient(self):
        l = LinearLayer(2, 3, 'random')
        weights = l.W.get()
        x = np.random.rand(2)
        grad = l.numeric_gradient(x)
        assert_almost_equal(grad, weights[:, 0:-1])

        in_delta = np.random.rand(3)
        for i, d in enumerate(in_delta):
            aux = np.zeros(in_delta.size)
            aux[i] = in_delta[i]
            delta = l.backward(aux)
            gradient = l.numeric_gradient(x)
            assert_almost_equal(in_delta[i] * gradient[i, :], delta, decimal=5)
예제 #2
0
 def test_backward(self):
     l = LinearLayer(2, 6, 'ones')
     d = l.backward(np.array([1.0, 2.0, 3.0, 4.0, 1.0, 1.0]))
     self.assertEqual(d.shape, (2, ))
     assert_array_equal(d, np.array([12.0, 12.0]))