【发布时间】:2018-05-25 10:40:17
【问题描述】:
我有一组可变长度的序列,我想构建一个模型,根据过去的许多标记来预测下一个标记。
问题是,如何训练具有可变长度序列的模型?
我知道填充,但是有没有办法不预先指定窗口长度?
我还阅读了有关使用batch_size = 1 的信息。在这种情况下,train_X 和 train_Y 应该是什么?如果我只使用一个很长序列的最后一个标记作为目标,就好像我丢弃了其中的所有子序列(即从 0->1、0->2.... 0->N-1)。我应该在输入 LSTM 之前手动创建所有这些子序列吗?
【问题讨论】:
-
我想我和你有同样的问题。我有不同大小的序列列表。模型应该根据之前的项目预测下一个项目。我不知道在使用
fit时应该如何传递目标。你解决了吗? -
@MarcinLagowski 我最终编写了一个生成器,它产生固定大小的子序列,其中目标是下一个元素。您可以使用
fit_generator()训练模型。虽然这样可行,但它会丢弃每批之间的内部 LSTM 单元状态。 -
所以您正在生成像
(..., (seq[0:5], seq[6]), (seq[1:6], seq[7]),...)这样的序列?您是否尝试过生成类似(..., (seq[0:5], seq[6]), (seq[0:6], seq[7]),...)的内容? -
是的,我采用了您展示的第一种方法。不,我没有尝试后一种。如果您尝试获得一些结果,请告诉我。
标签: keras deep-learning sequence lstm