0

我正在使用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)求助于一个循环?

4

1 回答 1

1

(从对问题的评论中添加一些细节)

这种批处理得到很好的支持,通常是获得良好性能所必需的。您的initial_state将有一个超过 N 的批次维度,并且 RNN 将在这些批次上运行 n 步。您只需将输入重塑为 [N, n, ...] (使用time_major=False,默认值)。

当您有需要一起批处理的可变长度输入时,它会变得更加棘手。像SequenceQueueingStateSaver这样的东西可以提供帮助。

于 2017-09-11T17:07:34.273 回答