为Keras状态RNN训练准备可变长度数据的正确方法

时间:2017-09-18 15:36:59

标签: deep-learning keras rnn

我正在训练Keras RNN来生成文章。在训练期间,我喂入可变长度的物品。使用stateLESS RNNs一切顺利。

我想尝试训练Keras stateFUL RNN,但Keras中的状态RNN需要长度与批量大小成比例的输入和输出,因此如果我将批量大小设置为256,那么我该如何输入长度为100的物品,200,350等?

我可以连接几篇文章,但即使它们的长度大于batch_size,我也需要以某种方式填充输入和输出,如果连接的文章长度仍然与批量大小不成比例。这样做的正确方法是什么?

现在我只是用一些像这样的占位符字符填充文章:

...
model.add(LSTM(...stateful=True...)
model.compile(...)
...
# batch_size = 15
article = 'hello world'
x = ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '_', '_', '_', '_', ]
y = ['e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '_', '_', '_', '_', '_', ]
model.fit(...)
model.reset_states()
...
# next article etc.

但是我担心模型会从这些“尾巴”中学到无意义的东西。没关系,还是我应该做点什么?

(我没有连接很多文章,因为我担心模型会尝试学习它们之间不存在的依赖关系,如果我不重置它们之间的状态,那就太多了)

0 个答案:

没有答案