自动生产的歌词展示

自动天生的歌词1

自动天生的歌词2

事理大略讲解

当我们输入 I am a teache这13个字符的时候,我们可以知道下一个字符很大几率会是r,由于这样可以组成teacher并且很符合前面的语境。
但是,传统的神经网络是不具有影象功能的,换而言之,传统的神经网络不会在预测r这个字符的时候还会考虑高下文。

运用AI生成周杰伦风格的歌词

而RNN(循环神经网络)在每次演习的时候都会把结果保存下来通报给下一次演习,预测的时候也是同样如此。
事理是这样,详细实现的时候要繁芜的多。
一个大略的2层RNN神经网络可能具有上万个的参数,本模型利用的LSTM层具有256个神经元,可以提取语义的多种特色,使连续性的措辞识别成为可能。
LSTM是大略RNN网络的升级版,紧张是办理了梯度消逝和增加了影象长度的功能。

LSTM部分网络示意图

代码--录入数据

录入数据我们把周杰伦的歌词TXT导入进程序,统共60000多个字,包括空格和标点符号

歌词数据集

第一步是编写一个DataLoader类以复用,加载数据里面紧张把字符转换成序号,并且删除重复元素制作了歌词码表,供后续利用。

代码--RNN模型

LSTM类紧张是继续了Keras.Model类来写自己的模型。
通过一个大略的256个神经元的LSTM单元后接1个全连接层。
并在末了的时候可以选择调用Softmax归一化末了的输出结果,这里输出的是每批的预测字符属于所有2500多个字符集的概率,概率和为1.

LSTM模型类

代码--演习

定义一些超参数,并且开始演习5000轮。

演习部分

可以看到当演习结束时,丢失函数从7.2低落到0.7旁边。
丢失函数即为预测字符与真实字符的概率分布差异。

开始时的LOSS

结束时的LOSS

代码--预测天生歌词

从歌词中随机取5个字长的歌词,并且循环天生下去,共天生500个字的新歌词如下:

预测代码

可以看到预测出来的歌词语义上还不是很连贯,但是整体风格轻微有了一点周董的歌曲的歌词风格。

AI天生的歌词