以下是有用的提示用於調試tf.gradients()
對於無效的一對張量:
grads = tf.gradients(<a tensor>, <another tensor that doesn't depend on the first>)
您嘗試運行在一個會話tf.gradients
甚至之前,你可以看到它使用print
print grads
是無效的,它將返回[None]
列表在一個單一None
。
如果試圖在反正會話中運行它:
results = sess.run(grads)
您將不會再得到None
,而不是你的問題描述的錯誤消息。
對於一個有效的對張量:
grads = tf.gradients(<a tensor>, <a related tensor>)
print grads
你會得到這樣的:
Tensor("gradients_1/sub_grad/Reshape:0", dtype=float32)
在有效的情況:
results = sess.run(grads, {<appropriate feeds>})
print results
你喜歡的東西
[array([[ 4.97156498e-06, 7.87349381e-06, 9.25197037e-06, ..., 8.72526925e-06, 6.78442757e-06, 3.85240173e-06], [ 7.72772819e-06, 9.26370740e-06, 1.19129227e-05, ..., 1.27088233e-05, 8.76379818e-06, 6.00637532e-06], [ 9.46506498e-06, 1.10620931e-05, 1.43903117e-05, ..., 1.40718612e-05, 1.08670165e-05, 7.12365863e-06], ..., [ 1.03536004e-05, 1.03090524e-05, 1.32107480e-05, ..., 1.40605653e-05, 1.25974075e-05, 8.90011415e-06], [ 9.69486427e-06, 8.18045282e-06, 1.12702282e-05, ..., 1.32554378e-05, 1.13317501e-05, 7.74569162e-06], [ 5.61043908e-06, 4.93397192e-06, 6.33513537e-06, ..., 6.26539259e-06, 4.52598442e-06, 4.10689108e-06]], dtype=float32)]
是不是sess.run期待列表作爲第一個參數,並且給它一個張量? – Aaron
這是一個很好的想法。我也以[t_grad]爲參數進行了嘗試。我也有同樣的結果。 – apfalz