在TensorFlow中批处理中每个项目的LSTM初始状态

我在TensorFlow中使用tf.nn.dynamic_rnn运行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这样的工具可以帮助解决这个问题。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注