我正在使用Keras进行字符级文本生成器。在通过示例/教程有一些东西,我仍然不明白。
训练数据(X)被分割成长度为maxlen的半冗余序列,y是紧跟在序列后面的字符。
我理解这是为了提高效率,因为这意味着训练将只实现maxlen字符内的依赖关系。
我正在努力理解为什么它是在序列虽然完成。我认为LSTM/RNN是通过每次输入一个字符并将预测的下一个字符与实际的下一个字符进行比较来训练的。这看起来非常不同,然后一次输入它们,比如maxlen=50个字符,并将50个序列的长度与下一个字符进行比较。
Keras实际上分解训练序列并逐个字符输入它们"在引擎盖下"吗?
如果不是,为什么?
由于序列生成,我假设您正在循环层中设置标志stateful=True
。如果没有这个选项,你将独立创造不同的序列/角色,我认为情况并非如此。如果此标志设置为True
,则这两种方法都是等效的-将文本分成序列是为了提高性能和简化原因。