循环神经网络文本生成器
Recurrent Neural Network Text Generator
我对神经网络还很陌生,我正在尝试制作一个生成文本的 Elman RNN。我在 Java 中使用 Encog。无论我向网络提供什么,训练都需要很长时间,而且总是陷入重复的字符序列。我对神经网络有点陌生,所以我只想确保我的概念是正确的。我不会费心分享代码,因为 Encog 会做所有困难的事情。
我训练网络的方式是为训练数据中的每个字符制作一个数据对,其中输入是字符,输出是下一个字符。所有这些都在一个训练集中。这几乎就是我必须编写的全部内容,因为 Encog 会处理其他所有事情。然后我将一个字符输入网络,它 returns 一个字符,然后输入一个,然后输入下一个,依此类推。我假设人们通常有一个结束字符或其他东西,以便网络告诉您何时停止,但我只是让它停止在 1000 个字符处以获得良好的文本样本。我知道 Elman 网络应该有上下文节点,但我认为 Encog 正在为我处理它。上下文节点一定在做某事,因为相同的字符并不总是具有相同的输出。
在小型数据集中,RNN 表现不佳,因为它必须从头开始学习所有内容。因此,如果你有一个小数据集(通常少于 1000 万个字符的训练集被认为是小的),那么收集更多数据。如果你得到一个重复的字符序列,没关系。您需要做的就是训练更长时间。
还有一个建议是从字符级别切换到单词级别模型。您将能够从中生成更少的乱码输出。
我对神经网络还很陌生,我正在尝试制作一个生成文本的 Elman RNN。我在 Java 中使用 Encog。无论我向网络提供什么,训练都需要很长时间,而且总是陷入重复的字符序列。我对神经网络有点陌生,所以我只想确保我的概念是正确的。我不会费心分享代码,因为 Encog 会做所有困难的事情。
我训练网络的方式是为训练数据中的每个字符制作一个数据对,其中输入是字符,输出是下一个字符。所有这些都在一个训练集中。这几乎就是我必须编写的全部内容,因为 Encog 会处理其他所有事情。然后我将一个字符输入网络,它 returns 一个字符,然后输入一个,然后输入下一个,依此类推。我假设人们通常有一个结束字符或其他东西,以便网络告诉您何时停止,但我只是让它停止在 1000 个字符处以获得良好的文本样本。我知道 Elman 网络应该有上下文节点,但我认为 Encog 正在为我处理它。上下文节点一定在做某事,因为相同的字符并不总是具有相同的输出。
在小型数据集中,RNN 表现不佳,因为它必须从头开始学习所有内容。因此,如果你有一个小数据集(通常少于 1000 万个字符的训练集被认为是小的),那么收集更多数据。如果你得到一个重复的字符序列,没关系。您需要做的就是训练更长时间。
还有一个建议是从字符级别切换到单词级别模型。您将能够从中生成更少的乱码输出。