我正在构建一个延时的循环模型,我需要知道TensorFlow如何以及何时计算其向后步骤。
考虑以下模型和伪代码:
unit_1 = LSTM(unit_size)
unit_2 = LSTM(unit_size)
unit_3 = LSTM(unit_size)
unit_4 = LSTM(unit_size)
ip_W = Variable([4 * unit_size, output_size])
ip_b = Variable([output_size])
prev_1 = tf.zeros([unit_size])
prev_2 = tf.zeros([unit_size])
prev_3 = tf.zeros([unit_size])
prev_4 = tf.zeros([unit_size])
for t, input in enumerate(input_data):
if t%1==0:
prev_1 = unit_1([input])
if t%2==0:
prev_2 = unit_2([input])
if t%3==0:
prev_3 = unit_3([input])
if t%4==0:
prev_4 = unit_4([input])
concat = tf.concat(0,[prev_1, prev_2, prev_3, prev_4])
output[t] = tf.matmul(concat, ip_W) + ip_B
Here is a gist to a usable version of this code, based on tensorflow/python/ops/rnn.py
对于未调用单元格的时间步长(即在T = 1时,调用unit_0,而其余部分不调用)是否更新了它们的权重?我不知道在每个州都更新它们是否是个好主意。细胞本身没有暴露于步骤中的任何新数据,所以我担心反向传播可能导致过度校正。非常感谢其他人对此的见解。
如果有必要澄清,请告诉我。