Neural network Keras LSTM文本生成培训

Neural network Keras LSTM文本生成培训,neural-network,keras,training-data,recurrent-neural-network,lstm,Neural Network,Keras,Training Data,Recurrent Neural Network,Lstm,我正在使用Keras开发字符级文本生成器。在阅读示例/教程时,我仍然不理解其中的一些内容 训练数据(X)被分割成长度为maxlen的半冗余序列,y是紧跟在序列后面的字符 我理解这是为了提高效率,因为这意味着培训将只实现maxlen字符内的依赖关系 我很难理解为什么它是按顺序进行的。我认为LSTM/RNN是通过一次输入一个字符并将预测的下一个字符与实际的下一个字符进行比较来训练的。这看起来非常不同,然后输入他们,比如一次输入maxlen=50个字符,然后将长度为50的序列与下一个字符进行比较 Ke

我正在使用Keras开发字符级文本生成器。在阅读示例/教程时,我仍然不理解其中的一些内容

训练数据(X)被分割成长度为maxlen的半冗余序列,y是紧跟在序列后面的字符

我理解这是为了提高效率,因为这意味着培训将只实现maxlen字符内的依赖关系

我很难理解为什么它是按顺序进行的。我认为LSTM/RNN是通过一次输入一个字符并将预测的下一个字符与实际的下一个字符进行比较来训练的。这看起来非常不同,然后输入他们,比如一次输入maxlen=50个字符,然后将长度为50的序列与下一个字符进行比较

Keras是否真的打破了训练序列,并在“引擎盖下”逐字输入


如果不是,原因是什么?

由于序列生成,我假设您正在循环层中设置标志
stateful=True
。如果没有此选项,您将使不同的序列/字符独立,我认为情况并非如此。如果此标志设置为
True
,则这两种方法是等效的-将文本分成序列是为了提高性能和简化原因。

只是为了澄清,如果my X由maxlen字符序列组成,他们用y来训练,y是训练数据中X中每个maxlen序列后面的一个字符。这与X相同,X由单个字符组成,y是下一个字符。如果训练数据是字母表,maxlen为3(步骤=1),X=abc、bcd、cde等,Y=d、e、f等,而X=a、b、c和Y=b、c、d等