我正在使用tf.nn.dynamic_rnn
在tensorflow中运行LSTM。我有一个N
初始状态向量的张量和一个M = N * n
输入的张量。每个系列都由n
个输入项组成,我想用第i个初始状态向量来评估第i个输入向量集,如下所示:
inputs[0:n], initial_states[0]
inputs[n:2*n], initial_states[1]
...
有没有办法通过一次调用
tf.nn.dynamic_rnn
和上面的张量直接做到这一点,还是我必须对每个初始状态向量及其对应的输入求助于循环(导致对len(initial_states)
的tf.nn.dynamic_rnn
调用) ? 最佳答案
(在问题评论中添加了一些细节)
这种批处理得到了很好的支持,通常是获得良好性能所必需的。您的initial_state的批次尺寸将超过N,并且RNN将在这些批次上运行n个步骤。您只需要将输入的形状调整为[N,n,...](默认为time_major=False
)。
当您需要将可变长度的输入进行批处理时,它将变得更加棘手。诸如SequenceQueueingStateSaver之类的功能可以为您提供帮助。