3

我正在构建一个延时循环模型,我需要知道 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

这是此代码可用版本的要点,基于 tensorflow/python/ops/rnn.py

我的问题:

对于未调用单元格的时间步长(即在 T=1 时,调用 unit_0,而其余所有未调用),它们的权重是否更新?我不知道让它们在每个州更新是否是个好主意。细胞本身在步骤中没有接触到任何新数据,所以我担心反向传播可能会导致过度校正。感谢其他人对此的见解。

让我知道是否需要任何澄清。

4

0 回答 0