我正在使用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 个步骤。您只需将输入 reshape 为 [N, n, ...](使用默认值 time_major=False
)。
当您有需要批量处理的可变长度输入时,事情会变得更加棘手。类似于 SequenceQueueingStateSaver可以提供帮助。
关于python-3.x - tensorflow 中批处理中每个项目的 LSTM 初始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46024957/