Как использовать `tf.gradients`? `TypeError: аргумент извлечения None имеет недопустимый тип <type 'NoneType'>` - PullRequest
0 голосов
/ 30 апреля 2018

Я получаю эту ошибку: 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 голосов
/ 30 апреля 2018

tf.gradients() вычисляет производную от ys по отношению к xs . Итак, у вас есть аргументы в обратном направлении Попробуйте это:

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