Tensorflow:训练步骤的延迟变量

时间:2016-10-11 18:15:17

标签: python tensorflow recurrent-neural-network

在Tensorflow中,我想在下一个训练步骤中使用上一个训练步骤中网络的一些变量。更具体地说,我想在训练期间计算二次成本函数,该函数利用先前训练步骤中的一些网络张量。

这个问题可以用RNN代码的片段来回答,但我还没弄清楚如何。我正在研究How can I feed last output y(t-1) as input for generating y(t) in tensorflow RNN?Tensorflow: How to pass output from previous time-step as input to next timestep以及TensorFlow: Remember LSTM state for next batch (stateful LSTM)

假设h是具有多个先前层的神经网络的最后一层,例如:

h = tf.nn.relu(tf.matmul(h_previous,W_previous))

如何在训练期间处理样本后保留张量h(例如将其保存到h_old),以便我可以在下一个训练步骤中使用它来进行如下计算:

d = tf.sub(h,h_old)

在此示例中,h用当前训练样本更新,h_old是在先前训练样本上计算的张量。关于这个问题的一些想法会很棒!

1 个答案:

答案 0 :(得分:0)

如何将h_old变为变量?

h_old = tf.Variable(tf.zeros(<some-shape>))

.
.

h = tf.nn.relu(tf.matmul(h_previous,W_previous))
d = tf.sub(h,h_old)
h_old.assign(h)