def compile_maxpool(output_shape, pool_size):
X = T.tensor4()
# compute output with both methods
out1 = T.signal.pool.pool_2d(X, pool_size,
ignore_border=True, st=None,
padding=(0, 0), mode='max')
out2 = my_pool_2d(X, pool_size,
ignore_border=True, st=None,
padding=(0, 0), mode='max')
# compute gradient with random incoming gradient for both cases
incoming_grad = T.as_tensor_variable(np.random.random(size=output_shape)
.astype(np.float32))
grad1 = T.grad(None, wrt=X, known_grads={out1: incoming_grad})
grad2 = T.grad(None, wrt=X, known_grads={out2: incoming_grad})
return theano.function([X], [out1, out2, grad1, grad2])
评论列表
文章目录