【问题标题】:Keras LSTM training for text generation用于文本生成的 Keras LSTM 训练
【发布时间】:2016-11-01 23:50:34
【问题描述】:

我正在使用 Keras 开发字符级文本生成器。在浏览示例/教程时,有些东西我仍然不明白。

训练数据 (X) 被拆分为长度为 maxlen 的半冗余序列,其中 y 是紧随该序列的字符。

我知道这是为了提高效率,因为这意味着训练只会实现 maxlen 个字符内的依赖关系。

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

Keras 真的会分解训练序列并“在后台”逐个字符地输入它们吗?

如果不是为什么?

【问题讨论】:

    标签: neural-network keras training-data recurrent-neural-network lstm


    【解决方案1】:

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

    【讨论】:

    • 只是澄清一下,如果我的 X 由 maxlen 字符序列组成,并且它们正在接受训练,而 y 只是训练数据中 X 中每个 maxlen 序列之后的一个字符。这与由单个字符组成的 X 相同,而 y 是下一个字符。如果训练数据是字母表,并且 maxlen 为 3(并且 step=1),其中 X=abc、bcd、cde 等和 Y=d、e、f 等与 X=a、b、c 和 y=b、c, d等
    猜你喜欢
    • 2018-01-08
    • 2023-03-10
    • 2019-02-28
    • 1970-01-01
    • 2019-06-14
    • 2019-11-25
    • 2018-01-30
    • 1970-01-01
    • 2017-06-27
    相关资源
    最近更新 更多