最近在github 上发现了一个好玩的项目,一个基于LSTM + keras 实现的诗歌生成器,地址是:https://github.com/youyuge34/Poems_generator_Keras. 我去看了一下代码,实现的原理其实很common,就是普通的基于LSTM 的序列模型。模型使用了43030首诗进行训练,最后生成的诗歌还是有模有样的(当然仅限于有模有样,自然是不能深究的了)
  1. 模型的核心思路:
1 input_tensor = Input(shape=(self.config.max_len, len(self.words)))
2 lstm = LSTM(512, return_sequences=True)(input_tensor)
3 dropout = Dropout(0.6)(lstm)
4 lstm = LSTM(256)(dropout)
5 dropout = Dropout(0.6)(lstm)
6 dense = Dense(len(self.words), activation='softmax')(dropout)
7 self.model = Model(inputs=input_tensor, outputs=dense)
8 optimizer = Adam(lr=self.config.learning_rate)
9 self.model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])

keras 真的是极简的深度学习语言,上述短短的9行代码就已经包括了全部的模型结构,而且不需要注释基本都能看懂代码在做什么。
  • 第一行: 构造输入向量
  • 第二行,构造了一个LSTM layer, hidden units size = 512
  • 第三行,构造了一个dropout layer,dropout rate = 0.6
  • 第四行,构造了一个LSTM layer,hidden units size = 256
  • 第五行,构造了一个dropout layer,dropout rate = 0.6
  • 第六行,构造了一个全连接层+softmax 作为 output layer
  • 第七行,利用 inputs 和 outputs 构造Model
  • 第八行,使用 Adam 优化器
  • 第九行,compile model,指定了模型的损失函数类型为交叉熵损失,优化器以及评价指标
2. 数据,https://github.com/youyuge34/Poems_generator_Keras/blob/master/dataset/poetry.txt,部分数据格式如下:
首春:寒随穷律变,春逐鸟声开。初风飘带柳,晚雪间花梅。碧林青旧竹,绿沼翠新苔。芝田初雁去,绮树巧莺来。
初晴落景:晚霞聊自怡,初晴弥可喜。日晃百花色,风动千林翠。池鱼跃不同,园鸟声还异。寄言博通者,知予物外志。
初夏:一朝春夏改,隔夜鸟花迁。阴阳深浅叶,晓夕重轻烟。哢莺犹响殿,横丝正网天。珮高兰影接,绶细草纹连。碧鳞惊棹侧,玄燕舞檐前。何必汾阳处,始复有山泉。
度秋:夏律昨留灰,秋箭今移晷。峨嵋岫初出,洞庭波渐起。桂白发幽岩,菊黄开灞涘。运流方可叹,含毫属微理。
  • 冒号前的是诗的名字,冒号后的是诗的内容
3. 训练
  • 我使用的单卡 RTX2080ti(11G显存) 进行训练,按照作者的默认配置,一共 训练了 34000+ epoch,每个 epoch 耗时 1s 左右,总共训练了接近10个小时。最终得到的keras 可用的模型文件以及训练日志我放到百度云了,地址是:https://pan.baidu.com/s/1XV9InTe9vMmwKNs5lBS-tQ
4.训练完成之后,原始的代码一共提供了4个进行predict 的API:
  • predict_first:给定一个汉字,输出一首五言绝句
  • predict_random:随机从全部的训练诗作当中抽出一首诗的首句,然后生成一首诗
  • predict_gen:给定五个汉字作为首句,生成一首五言绝句
  • predict_hide:给定四个汉字,输出以这个四个汉字开头的藏头诗
  • 为了方便预测,我封装了一个简单的 命令行工具,提供了四种预测,代码可以参考我对原始repo 的 fork 版本(https://github.com/Lyrichu/Poems_generator_Keras/tree/huchengchun),使用方式如下:
5. 愉快地生成诗歌玩耍吧

转载于:https://www.cnblogs.com/lyrichu/p/11257408.html

基于LSTM + keras 的诗歌生成器相关推荐

  1. 基于LSTM + keras 的古诗生成器

    1.语料准备:包含 5.5 万首唐诗.26 万首宋诗.2.1 万首宋词和其他古典文集.诗人包括唐宋两朝近 1.4 万古诗人,和两宋时期 1.5 千古词人.数据来源于互联网.每行一首诗,标题在预处理的时 ...

  2. lstm需要优化的参数_通过Keras 构建基于 LSTM 模型的故事生成器

    LSTM 网络工作示意图 什么是 LSTM 网络? LSTM (Long Short Term Memory, 长短期神经网络)是一种特殊的循环神经网络(RNN, Recurrent neural n ...

  3. 使用Keras 构建基于 LSTM 模型的故事生成器

    LSTM 网络工作示意图 什么是 LSTM 网络? LSTM (Long Short Term Memory, 长短期神经网络)是一种特殊的循环神经网络(RNN, Recurrent neural n ...

  4. Keras深度学习实战(32)——基于LSTM预测股价

    Keras深度学习实战(32)--基于LSTM预测股价 0. 前言 1. 模型与数据集分析 1.1 数据集分析 1.2 模型分析 2. 基于长短时记忆网络LSTM预测股价 2.1 根据最近五天的股价预 ...

  5. tensorflow2.0 基于LSTM模型的文本生成

    春水碧于天,画船听雨眠 基于LSTM模型的唐诗文本生成 实验基本要求 实验背景 实验数据下载 LSTM模型分析 实验过程 文本预处理 编解码模型 LSTM模型设置 实验代码 实验结果 总结 致谢 实验 ...

  6. 人工智能--基于LSTM的文本生成

    学习目标: 理解文本生成的基本原理. 掌握利用LSTM生成唐诗宋词的方法. 学习内容: 利用如下代码和100首经典宋词的数据,基于LSTM生成新的词,并调整网络参数,提高生成的效果. poetry50 ...

  7. bilstm+crf中文分词_基于LSTM的中文分词模型

    中文分词任务是一个预测序列的经典问题,已知的方法有基于HMM[1]的分词方法.基于CRF[2]的方法和基于LSTM的分词方法. 本文介绍Xinchi Chen等人[3]提出的基于LSTM的分词方法.根 ...

  8. 基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种

    基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种 ,含数据集可直接运行 完整代码下载地址:基于LSTM三分类的文本情感分 ...

  9. java lstm pb_在Tensorflow Serving上部署基于LSTM的文本分类模型

    一些重要的概念 Servables Servables 是客户端请求执行计算的基础对象,大小和粒度是灵活的. Servables 不会管理自己的运行周期. 典型的Servables包括: a Tens ...

  10. 基于深度学习lstm_深度学习和基于LSTM的恶意软件分类

    基于深度学习lstm Malware development has seen diversity in terms of architecture and features. This advanc ...

最新文章

  1. Zabbix服务器性能优化记录
  2. pip源更换为清华源_kali2020更换国内的源
  3. CentOS 安装Zabbix 手记
  4. MySQL读写分离应用层解决
  5. 阿里百度盛大等全业务布局揭秘
  6. python列表常用方法_第24p,必须掌握,列表的常用方法
  7. rvm RuvyGem Cocoapods brew
  8. 开挂的印度裔00后:7岁“出道”教编程,12岁成为IBM荣誉顾问
  9. 推荐一门免费提升开发效率的课程,非广告。
  10. MySql Connector-Java下载
  11. 用C语言编写约瑟夫环程序,约瑟夫环C语言,请高手检查我的程序
  12. Postgre 中的空值判断
  13. 11.PHP memcache 与 memcached 区别
  14. BZOJ 1146 网络管理Network(树链剖分+BST)
  15. 新疆职称英语和职称计算机,职称计算机考试题库
  16. 时钟系统(NTP子母钟系统)如何为高铁系统保驾护航
  17. ThinkPHP报错The requested URL /index/index/xxx.html was not found on this server.
  18. Win10 显示无法连接到Internet,但是能上网浏览
  19. Angular 4入门教程系列:14:PrimeNG的使用方式
  20. Linux升级glibc

热门文章

  1. python3GUI--你喜欢的无损音乐下载工具(附源码)
  2. 集成App Linking服务后无法正确跳转到应用的解决方案
  3. 如何写SCI论文的摘要
  4. flex弹性布局教程-02-容器display设置为flex
  5. uc浏览器hd for android pad,UC浏览器hd
  6. J. 青出于蓝胜于蓝(dfs序+树状数组)
  7. 360Lib整体介绍
  8. 人生杂感随笔-观佛教与道教(六道轮回)
  9. C++并发编程 - 同步并发操作
  10. 干货| RNA质检的那些事