在tensorflow
问题描述:
操作MaxPoolWithArgmax定义我想用在TensorFlow max_pool_with_argmax
操作,但我得到了下面的错误没有梯度:在tensorflow
LookupError: No gradient defined for operation 'MaxPoolWithArgmax_1' (op type: 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。
谢谢,阿里
并非每个TF函数都具有已定义的梯度。有一个用于花式numpy风格索引的地方,没有渐变。你可能只需要使用别的东西。 –
我以为因为这个函数已经在神经网络库中定义了,所以它必须有一个渐变。你有什么建议我怎么才能计算TF中最大汇集指数?或任何其他功能? –
是否有任何简单的方法来检查给定的tf op是否定义了梯度? –