用LSTM自动生成古诗

这几天自学深度学习算法,写了个自动写诗的循环神经网络(RNN)程序。通过35000首古诗,让计算机学习古诗文的结构,然后按照学习到的语言模型自动生成古诗。


训练的次数不多,总共5轮遍历古诗集,每轮大概4000次训练,每次训练10个batch。电脑配置太渣,程序跑了1个多小时才出来,效果如下。写出来的诗虽然看不出啥意思,但起码有诗的结构(七言,五言),如果训练次数多一些效果会更好。



乱玉谪西海,尚能适涉祠。

皇恩中其去,脱厉亦烟盘。

所予只执翅,知是玉城风。

几于圆四户,太液抵骊人。

今日乌睛好,红花露羽明。

长安碧梧陌,何计且何妨。


故人出关去,况是萧萧关。

相逢皋皋春,中山征马阑。

落日初飘香,深亭凌岚月。

望中逐月声,倏黄盈窗影。


关山林上危窗声,连杂天底数三夏。

蚕与潮上千条生,城西云木敛东西。

我休试起山川上,悔得尘埃不可言。




好了,如果你也想写个这样的程序,起码要做下面这些准备:


  • 学习神经网络算法。包括经典神经网络(NN),卷积神经网络(CNN)和循环神经网络(RNN)。NN本质上是一种通过梯度下降法进行优化的权值网络;CNN是在NN的基础上加入卷积层,自动对输入进行特征提取;而RNN则是时间序列上构建的NN。

  • 学习TensorFlow。这是Google开源的一款深度学习框架,基于python编程,内置丰富的深度学习库,对于搭建各种神经网络结构都很方便。

  • 了解词向量。什么是词向量呢?文字是人类对各种概念的抽象符号,没法作为数学模型的输入。所以要把文字转化为向量。词向量就是一种文字的数学表示方法,并且相近的两个词在向量空间的距离也相近。比如“中国”,“美国”,“猫”这三个词,它们的二维词向量可以表示为(1,1),(2,2),(10,10)。中国和美国是相近的概念,所以它们的词向量距离也更近。词向量也是神经网络训练过程中自动生成的,并不需要人工设计。

  • 了解LSTM。LSTM是一种更加复杂的RNN结构,具体的数学理论我也没看懂。好在TensorFlow有封装好了的LSTMCell可以直接调用,省去了自己构造的困难。


你可能感兴趣的:(深度学习,神经网络,python,编程)