我发现张量的值总是在循环变化。我在这里列出了部分代码:
agent_prob = tf.zeros([BATCH_SIZE, 1], dtype = tf.float32)
feed_data = tf.ones([BATCH_SIZE, 1], dtype = tf.int32)
for time in range(STEP):
agent_logits = agent(feed_data)
agent_log_prob = K.log(K.softmax(agent_logits))[:, -1, :]
index = tf.stack([tf.range(indices.shape[0])[:, None], indices], axis = 2)
agent_loss = tf.gather_nd(agent_log_prob, index)
agent_prob = tf.concat([agent_prob, agent_loss], axis=1)
我在循环内打印出agent_prob.eval()
,这是前三个循环的结果。您可以看到上一次迭代中的值在下一个迭代中已被其他随机值替换。
[[ 0. -4.481065]
[ 0. -4.481065]]
[[ 0. -4.481062 -4.479786]
[ 0. -4.481065 -4.479623]]
[[ 0. -4.2824945 -4.4838 -4.4854503]
[ 0. -4.481065 -4.47854 -4.4854517]]
任何人都可以解释吗?谢谢!