def test_max_pooling():
x2 = ad.Variable(name='x2')
y = au.nn.maxPool(x2, filter=(2, 2), strides=(2, 2))
grad_x2, = ad.gradients(y, [x2])
executor = ad.Executor([y, grad_x2])
x2_val = np.random.randn(1, 1, 4, 4)
y_val, grad_x2_val = executor.run(feed_shapes={x2: x2_val})
numerical_grad_x2 = ad.eval_numerical_grad(y,
feed_dict={x2: x2_val},
wrt=x2,
h=1e-5)
assert isinstance(y, ad.Node)
# TODO: (upul) looks like a bug in my eval_numerical_grad implementation
# Hence I'm using one decimal points
npt.assert_array_almost_equal(grad_x2_val, numerical_grad_x2, decimal=1)
评论列表
文章目录