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

我想尝试训练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.

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

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