没有为tensorflow中的MaxPoolWithArgmax操作定义渐变

时间:2016-12-29 17:06:57

标签: python tensorflow

我想在TensorFlow中使用max_pool_with_argmax操作,但是我遇到了以下错误:

  

LookupError:没有为操作定义渐变' MaxPoolWithArgmax_1' (op类型:MaxPoolWithArgmax)

以下是我使用的max_pool_with_argmax代码:

BN_relu13 =   tf.nn.relu(tf.nn.batch_normalization(h_conv13,batch_mean13,batch_var13,tf.Variable(tf.zeros([64])),tf.Variable(tf.ones([64])),epsilon)) 
#max pooling 
h_pool1, argmax_1 = max_pool_2x2(BN_relu13)

这里是max_pool_2x2模块:

def max_pool_2x2(x):
    return tf.nn.max_pool_with_argmax(x, ksize=[1, 2, 2, 1],strides=[1, 2, 2, 1], padding='SAME')

在我构建网络后,我使用AdamOptimizer来训练我的网络。

顺便说一句,当我使用tf.nn.max_pool(而不是tf.nn.max_pool_with_argmax)时,一切正常。

我在GPU上运行我的代码,我在ubuntu14上使用python 2.7。

谢谢,阿里

1 个答案:

答案 0 :(得分:1)

渐变操作实际上已实现here,但不知何故未注册here。值得在其上提交github问题。

同时,您可以按照tutorial(仅限渐变注册部分)自行注册操作。