龙空技术网

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

科技窗 12826

前言:

现在朋友们对“周杰伦歌词txt”大体比较关心,姐妹们都需要学习一些“周杰伦歌词txt”的相关知识。那么小编同时在网络上网罗了一些对于“周杰伦歌词txt””的相关内容,希望朋友们能喜欢,我们快快来了解一下吧!

近年来AI技术发展的非常快,本文展示了如何利用AI自动生成周杰伦歌曲风格的歌词,代码是基于TensorFlow2.1和Python开发的,主要使用了RNN中的LSTM长短时记忆网络。

自动生产的歌词展示

自动生成的歌词1

自动生成的歌词2

原理简单讲解

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

而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生成的歌词

标签: #周杰伦歌词txt