如何使用`tf.gradients`? `TypeError:Fetch参数None具有无效类型<type'nonetype'=“”>`

时间:2018-04-30 09:52:28

标签: python-2.7 tensorflow gradient

我收到此错误:TypeError: Fetch argument None has invalid type <type 'NoneType'>

我想计算loss w.r.t的渐变。 m_leftops2

t_im0 = tf.placeholder(tf.float32, [None, None, None, None], name='left_img')
t_im1 = tf.placeholder(tf.float32, [None, None, None, None], name='right_img')

strides=[1,1,1,1]
m_leftOps2 =  tf.tanh(tf.nn.conv2d(t_im0, w1, strides=strides, padding=padding, data_format="NCHW")+b)
m_rightOps2 = tf.tanh(tf.nn.conv2d(t_im1, w1, strides=strides, padding=padding, data_format="NCHW")+b)

loss = tf.reduce_sum(m_leftOps2 * m_rightOps2)
t_gradients = tf.gradients(xs=loss, ys=[m_leftOps2])

with tf.Session(config=config) as sess:
    sess.run(tf.global_variables_initializer())
    feed_dict = {t_im0: normalized_i1, t_im1: normalized_i2}
    print("gradients: ", sess.run([loss, t_gradients], feed_dict=feed_dict))

如果我计算m_leftOps2的渐变,我应该得到结果m_rightOps2

1 个答案:

答案 0 :(得分:1)

tf.gradients()针对 xs 计算 ys 的衍生产品。所以你的论点倒退了。试试这个:

t_gradients = tf.gradients( ys = loss, xs = m_leftOps2 )