具有可变长度序列的 RNN/LSTM 库,无需分桶或填充

Posted

技术标签:

【中文标题】具有可变长度序列的 RNN/LSTM 库,无需分桶或填充【英文标题】:RNN/LSTM library with variable length sequences without bucketing or padding 【发布时间】:2017-03-28 12:28:25 【问题描述】:

我尝试解决的问题是具有 4 个并行输入批次序列的分类问题。为此,我需要 4 个并行的 RNN/LSTM,它们合并到一个完全连接的层中。问题是在每个并行批次中,序列的长度是可变的。

我不能使用填充到最大序列长度,因为它使用了太多 RAM。实际上,有些序列真的很长。 我不能使用填充来缩短长度,因为模型无法预测输出。我需要完整的序列,我无法提前知道序列中有趣的部分在哪里。

我不能使用分桶,因为如果我在一个批次中拆分一个序列,我必须对其他 3 个批次中具有相同索引的每个序列执行相同的操作。由于并行序列的长度不同,模型将尝试将大量空序列与一个或另一个类相关联。

理论上,RNN/LSTM 应该能够在不进行序列操作的情况下学习不同长度的序列。不幸的是,我不知道使我能够这样做的实现。是否存在这样的 RNN/LSTM 库(任何语言)?

【问题讨论】:

【参考方案1】:

Theano 可以处理可变长度序列,但 Tensorflow 不能。你可以用这个 Theano 进行测试,然后告诉我们你的结果。

【讨论】:

以上是关于具有可变长度序列的 RNN/LSTM 库,无需分桶或填充的主要内容,如果未能解决你的问题,请参考以下文章

RNN - LSTM - GRU

如何在 Keras 中重置状态变量?

时间序列: 炙手可热的RNN: LSTM

使用 Keras、Tensorflow 进行具有多个时间序列维度的 RNN 时间序列预测

RNN 与 LSTM 的应用

CNN + LSTM