前言:
现在朋友们对“周杰伦歌词txt”大体比较关心,姐妹们都需要学习一些“周杰伦歌词txt”的相关知识。那么小编同时在网络上网罗了一些对于“周杰伦歌词txt””的相关内容,希望朋友们能喜欢,我们快快来了解一下吧!近年来AI技术发展的非常快,本文展示了如何利用AI自动生成周杰伦歌曲风格的歌词,代码是基于TensorFlow2.1和Python开发的,主要使用了RNN中的LSTM长短时记忆网络。
自动生产的歌词展示
原理简单讲解
当我们输入 I am a teache这13个字符的时候,我们可以知道下一个字符很大几率会是r,因为这样可以组成teacher并且很符合前面的语境。但是,传统的神经网络是不具有记忆功能的,换而言之,传统的神经网络不会在预测r这个字符的时候还会考虑上下文。
而RNN(循环神经网络)在每次训练的时候都会把结果保存下来传递给下一次训练,预测的时候也是同样如此。原理是这样,具体实现的时候要复杂的多。一个简单的2层RNN神经网络可能具有上万个的参数,本模型使用的LSTM层具有256个神经元,可以提取语义的多种特征,使连续性的语言识别成为可能。LSTM是简单RNN网络的升级版,主要是解决了梯度消失和增加了记忆长度的功能。
代码--录入数据
录入数据我们把周杰伦的歌词TXT导入进程序,总共60000多个字,包括空格和标点符号
第一步是编写一个DataLoader类以复用,加载数据里面主要把字符转换成序号,并且删除重复元素制作了歌词码表,供后续使用。
代码--RNN模型
LSTM类主要是继承了Keras.Model类来写自己的模型。通过一个简单的256个神经元的LSTM单元后接1个全连接层。并在最后的时候可以选择调用Softmax归一化最后的输出结果,这里输出的是每批的预测字符属于所有2500多个字符集的概率,概率和为1.
代码--训练
定义一些超参数,并且开始训练5000轮。
可以看到当训练结束时,损失函数从7.2下降到0.7左右。损失函数即为预测字符与真实字符的概率分布差异。
代码--预测生成歌词
从歌词中随机取5个字长的歌词,并且循环生成下去,共生成500个字的新歌词如下:
可以看到预测出来的歌词语义上还不是很连贯,但是整体风格稍微有了一点周董的歌曲的歌词风格。
标签: #周杰伦歌词txt