最大池梯度误差(Tensorflow 0.9rc0)

最大池梯度误差(Tensorflow 0.9rc0),tensorflow,Tensorflow,我得到一个最大池自动微分错误。请注意,我正在输入一个图像,使用convnet输出wrt输入图像的梯度,根据梯度更新图像,然后将图像反馈回网络(想想敌对图像)。因此,这涉及到更复杂的梯度处理,因此我得到以下错误: LookupError: No gradient defined for operation 'gradients/MaxPool_grad/MaxPoolGrad' (op type: MaxPoolGrad) 有一个简单的解决方法吗?正如错误消息所示,TensorFlow中的Max

我得到一个最大池自动微分错误。请注意,我正在输入一个图像,使用convnet输出wrt输入图像的梯度,根据梯度更新图像,然后将图像反馈回网络(想想敌对图像)。因此,这涉及到更复杂的梯度处理,因此我得到以下错误:

LookupError: No gradient defined for operation 'gradients/MaxPool_grad/MaxPoolGrad' (op type: MaxPoolGrad)

有一个简单的解决方法吗?

正如错误消息所示,TensorFlow中的
MaxPoolGrad
操作在版本
0.9
的TensorFlow中没有实现相应的梯度函数

更详细地说,Python函数
tf.gradients
通过遍历到目前为止构建的计算图来执行反向模式自动微分。当它遇到操作类型为
Foo
的节点时,它会尝试在内部注册表中查找相应的梯度函数。通过调用函数填充注册表

请注意,尽管TensorFlow在该注册表中有许多(实际上是大多数)类型的节点的条目,但仍有一部分节点类型没有条目。这种情况会导致上述错误。为
MaxPoolGrad
找出一个梯度函数,实现它,并发送一个pull请求,这确实很有用