如果我在Keras中使用有状态RNN来处理长度为N的序列,该序列被分成N个部分(每个时间步骤被单独处理),
答案 0 :(得分:5)
反向传播范围限于输入序列的第二维。即,如果您的数据类型为(num_sequences, num_time_steps_per_seq, data_dim)
,那么在价值num_time_steps_per_seq
的时间范围内进行反向支持请查看
答案 1 :(得分:3)
在Keras中,您需要了解有关RNN的一些事项。默认情况下,所有递归神经网络中的参数return_sequences=False
。这意味着默认情况下,仅处理整个输入序列后的RNN激活将作为输出返回。如果您希望在每个时间步进行激活并单独优化每个时间步,则需要将return_sequences=True
作为参数(https://keras.io/layers/recurrent/#recurrent)传递。
接下来需要知道的是,所有有状态的RNN都会记住最后一次激活。因此,如果您有一个较大的输入序列并以较小的序列(我相信您正在这样做)将其分解,则在处理第一个序列后,网络中的激活将保留在网络中,因此在处理时会影响网络中的激活。第二序列。这与网络优化方式无关,网络只是最小化输出和目标之间的差异。