出品 | AI科技大本营(ID:rgznai100)
自然语言处理作为人工智能的一个重要分支,在我们的生活中得到了广泛应用。其中RNN算法作为自然语言处理的经典算法之一,是文本生成的重要手段。而今天我们就将利用RNN算法建立一个写歌词的软件。其中的界面如下:
上图中左边是RNN模型没有按时间展开的图,如果按时间序列展开,则是上图中的右边部分。我们重点观察右边部分的图。
这幅图描述了在序列索引 tt附近RNN的模型。其中:
-
x(t)x(t)代表在序列索引 tt时训练样本的输入。同样的,x(t)x(t)和x(t+1)x(t+1)代表在序列索引 tt和t+1t+1时训练样本的输入。
-
h(t)h(t)代表在序列索引 tt时模型的隐藏状态。h(t)h(t)由x(t)x(t)和h(t)h(t)共同决定。
-
o(t)o(t)代表在序列索引 tt时模型的输出。o(t)o(t)只由模型当前的隐藏状态h(t)h(t)决定。
-
L(t)L(t)代表在序列索引 tt时模型的损失函数。
-
y(t)y(t)代表在序列索引 tt时训练样本序列的真实输出。
-
U,W,VU,W,V这三个矩阵是我们的模型的线性关系参数,它在整个RNN 络中是共享的,这点和DNN很不相同。也正因为是共享了,它体现了RNN的模型的“循环反馈”的思想。
基于以上认知,我们开始搭建我们的软件。
RNN算法搭建
1、数据集处理和准备:
我们训练的数据集使用各种歌手的歌词本作为训练集。其中数据集放在date.txt里,其中部分数据集如下:
RNN算法的搭建,我们定义整个神经 络类,然后分别定义初始化、输入、神经元定义等函数。损失函数和优化器使用均方差和AdamOptimizer优化器即可。
部分代码如下:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!