上一篇:《再用RNN神经网络架构设计生成式语言模型》
序言:本文探讨了如何通过多种方法改进模型的输出,包括扩展数据集、调整模型架构、优化训练数据的窗口设置,以及采用字符级编码。这些方法旨在提高生成文本的准确性和合理性,同时强调实验和调整对模型设计与优化的重要性。
扩展数据集
你可以很简单地将硬编码数据集的模式扩展为使用文本文件。我已经托管了一个包含大约1700行文本的文件,这些文本从许多歌曲中收集而来,供你进行实验。稍作修改,你就可以使用这个文本文件,而不是单个硬编码的歌曲。
在 Colab 中下载数据,可以使用以下代码:
!wget --no-check-certificate \
https://storage.googleapis.com/laurencemoroney-blog.appspot.com/ \
irish-lyrics-eof.txt -O /tmp/irish-lyrics-eof.txt
然后,你可以像这样将文本加载到你的语料库中:
data = open('/tmp/irish-lyrics-eof.txt').read()
corpus = data.lower().split("\n")
接下来的代码无需修改即可运行!将这个数据集训练1000个epoch后,准确率大约可以达到60%,但增长曲线趋于平缓(图8-7)。
图8-7. 在更大的数据集上进行训练
再次尝试短语“in the town of athy”时,预测结果是“one”,但这次的概率只有40%。
对于“sweet jeremy saw dublin”,预测的下一个词是“drawn”,概率为59%。预测接下来的10个词的结果为:
sweet jeremy saw dublin drawn and fondly i am dead and the parting graceful
结果看起来稍微好了一些!但我们还能进一步改进吗?
调整模型架构
改进模型的一种方法是更改其架构,使用多个堆叠的LSTM层。这非常简单,只需要确保在第一层LSTM中将return_sequences设置为True。以下是代码:
python
Copy code<