首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于循环神经网络的古诗生成器

1、环境部署

本例依赖Windows 7 x64位系统,基于循环神经网络,使用tensorflow实现。具体环境是python3.6,NUMPY1.13,CUDA9.1,相关安装流程参见实验一以及相关资料。

2、数据准备

训练数据为四万多首古诗,但古诗文件不能够直接使用,需要生成词汇表(有6272个字),并将古诗文件转换成向量。

例如将诗词:

赋得临池柳:岸曲丝阴聚,波移带影疏。还将眉里翠,来就镜中舒。

转化为对应的词向量为:

其中,3表示开始符,4表示终止符,1,表示逗号,2表示句号,其它数字对应汉子或字符。

具体代码如下:

3、定义模型

定义RNN循环神经网络结构。定义了一个RNN深度为2,LSTM隐藏节点个数128的循环神经网络:

HIDDEN_SIZE= 128 # LSTM隐藏节点个数

NUM_LAYERS= 2 # RNN深度

这里使用了自带的函数进行词嵌入进一步缩小输入维度。

另外还定义了对应的交叉熵、前向传播以及后向传播过程

4、设置模型参数

设置训练参数(可调)

VOCAB_SIZE= 6272 #词汇表大小

SHARE_EMD_WITH_SOFTMAX= True #是否在embedding层和softmax层之间共享参数

MAX_GRAD= 5.0 #最大梯度,防止梯度爆炸

LEARN_RATE= 0.0005 #初始学习率

LR_DECAY= 0.92 #学习率衰减

LR_DECAY_STEP= 600 #衰减步数

BATCH_SIZE= 64 # batch大小

CKPT_PATH= 'ckpt/model_ckpt' #模型保存路径

VOCAB_PATH= 'vocab/poetry.vocab' #词表路径

EMB_KEEP= 0.5 # embedding层dropout保留率

RNN_KEEP= 0.5 # lstm层dropout保留率

5、训练模型

使用数据预处理中生成的数据文件训练神经网络。

6、测试生成古诗代码

7、结果演示

7.1生成古诗

当模型训练完成之后,可以尝试生成古诗。输入以下命令可以进行生成,至于质量嘛,凑合吧。

结果示例1:

树阴飞尽水三依,谩自为能厚景奇。

莫怪仙舟欲西望,楚人今此惜春风。

结果示例2:

秦重人陇振西池,笑知将阎酌国相。

衣耿水时忆共云,蜀灵行惊夜子吟。

偶是为能观斗县,得堪宁可是能尘。

得黑杂吹花池雁,可日知人更亦山。

鸡飞相足府难弃,要怜轻鬓远南公。

结果示例3:

岩外前苗点有泉,紫崖烟霭碧芊芊。

似僧月明秋更好,一踪颜事欲犹伤?

7.2生成藏头诗

模型做的比较小,训练数据也不足,在生成藏头诗上的表现不是很好,平仄可能控制的不是太好,可能娱乐性更多一些。

只要将

if__name__ == '__main__':

generate_poem()

改成

if__name__ == '__main__':

generate_acrostic(u'好好学习',7)

然后运行即可。

结果示例:

好古客萧舟,好徐山水巴。学家中北行,习隋林花悲。

好洞阶颜竹,好恋遥霜欹。学稚方军敕,习袅楼檐窗。

好饿丰知月枕上,好波愁遇一阳契。学尘突分习沾树,习清郊定看僧鸾。

好忘月高烟客乡,好来鹤在仍禅江。学高园老下山青,习丑当傍披溪有。

参考资料:

杨森,陆工大软件工程专业硕士研究生,研究方向移动应用测试,希望能将人工智能算法应用到移动应用的自动化测试中,对于软件可靠性分析,深度学习、云计算、建模方法、算法设计等方向都有极大的学习兴趣,曾获得全国大学生数学建模大赛一等奖,云计算大赛二等奖,蓝桥杯程序设计大赛二等奖等。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180515G0V7ZQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券