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)
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]))