这是因为
assign
它只是一个TF操作,和其他任何操作一样,只有在需要时才执行。因为在通往
final_prediction
predictions
只是一个变量,赋值永远不会执行。
我认为最直接的解决办法是更换线路
predictions[step_num-1].assign(x)
通过
x = predictions[step_num-1].assign(x)
分配
最终预测
TF实际上需要通过
分配
所以任务应该完成。
另一种选择是
tf.control_dependencies
分配
)取决于循环中计算的值,我不确定TF在这种情况下执行操作的顺序。以下方法应该有效:
for step_num in range(num_steps):
x = tf.matmul(x, weights_1)
x = tf.matmul(x, weights_2)
with tf.control_dependencies([predictions[step_num-1].assign(x)]):
x = tf.identity(x)
我们用
tf.identity
作为一个角落只是有一些东西要包装
control_dependencies
. 我认为这是两者之间比较灵活的选择。但是,它附带了一些在
the docs
.