在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是在先前训练样本上计算的张量。关于这个问题的一些想法会很棒!
答案 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)