我正在训练 Keras RNN 来生成文章。在培训期间,我会提供长度可变的文章。使用无状态 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.
但我担心模型会从这些“尾巴”中学到毫无意义的东西。可以吗,还是我应该做点别的?
(我没有串联很多文章,因为我担心模型会尝试学习它们之间不存在的依赖关系,如果我没有在输入太多它们之间重置状态)