Tensorflow中的反向传播

时间:2016-03-01 20:55:32

标签: python tensorflow recurrent-neural-network

我正在构建一个延时的循环模型,我需要知道TensorFlow如何以及何时计算其向后步骤。

考虑以下模型和伪代码:

A time-delayed recurrent network

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,而其余部分不调用)是否更新了它们的权重?我不知道在每个州都更新它们是否是个好主意。细胞本身没有暴露于步骤中的任何新数据,所以我担心反向传播可能导致过度校正。非常感谢其他人对此的见解。

如果有必要澄清,请告诉我。

0 个答案:

没有答案