我正在使用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之类的功能可以为您提供帮助。

08-24 22:31