用于文本生成的 Keras LSTM 训练
Keras LSTM training for text generation
我正在使用 Keras 开发字符级文本生成器。在经历 examples/tutorials 的过程中,有一些我仍然不明白的地方。
正在将训练数据 (X) 拆分为长度为 maxlen 的半冗余序列,其中 y 是紧跟在序列之后的字符。
我理解这是为了提高效率,因为这意味着训练将只实现 maxlen 个字符内的依赖关系。
我很难理解为什么它是按顺序完成的。我认为 LSTM/RNN 是通过一次输入一个字符并将预测的下一个字符与实际的下一个字符进行比较来训练的。这似乎与输入它们一次说 maxlen=50 个字符并将长度为 50 的序列与下一个字符进行比较非常不同。
Keras 是否真的将训练序列分解并逐字符输入 "under the hood"?
如果不是为什么?
由于序列生成,我假设您在循环层中设置标志 stateful=True
。如果没有此选项,您将独立制作不同的序列/字符,我认为情况并非如此。如果此标志设置为 True
那么这两种方法是等效的 - 将文本分成序列是为了提高性能和简化原因。
我正在使用 Keras 开发字符级文本生成器。在经历 examples/tutorials 的过程中,有一些我仍然不明白的地方。
正在将训练数据 (X) 拆分为长度为 maxlen 的半冗余序列,其中 y 是紧跟在序列之后的字符。
我理解这是为了提高效率,因为这意味着训练将只实现 maxlen 个字符内的依赖关系。
我很难理解为什么它是按顺序完成的。我认为 LSTM/RNN 是通过一次输入一个字符并将预测的下一个字符与实际的下一个字符进行比较来训练的。这似乎与输入它们一次说 maxlen=50 个字符并将长度为 50 的序列与下一个字符进行比较非常不同。
Keras 是否真的将训练序列分解并逐字符输入 "under the hood"?
如果不是为什么?
由于序列生成,我假设您在循环层中设置标志 stateful=True
。如果没有此选项,您将独立制作不同的序列/字符,我认为情况并非如此。如果此标志设置为 True
那么这两种方法是等效的 - 将文本分成序列是为了提高性能和简化原因。