基于char-rnn和tensorflow生成周杰伦歌词

                                                                                                                                                                                                                                                               

基于char-rnn和tensorflow生成周杰伦歌词

向AI转型的程序员都关注了这个号????????????

大数据挖掘DT机器学习  公众号: datayx

本着学习tensorflow和RNN的目的,前些天发现了char-rnn

https://github.com/karpathy/char-rnn

这个有趣的项目,具体就是基于字符预测下一个字符,比日说已知hello的前四个字母hell,那我们就可以据此预测下一个字符很可能是o,因为是字符char级别的,并没有单词或句子层次上的特征提取,相对而言比较简单易学。

因为原作者的代码是基于torch写的,为了熟悉tensorflow,我就仔细地研究了一下具体代码,然后改写成基于tf的代码,基于tensorflow的char-rnn-tensorflow,

https://github.com/sherjilozair/char-rnn-tensorflow

恕我直言,有以下三点比较膈应:

  1. 代码写的不够直观简洁

  2. 另外因为最新tensorflow的部分api有所变化

  3. 中英文之间有一些差异,看能否成功移植到处理中文上

于是打算基于以上两个项目,自己重写!

基本原理

拿中文举例来说,每个字与每个字并不是统计上独立的,比如说如果不爱就不要再伤害 长度为10的序列,如果我们知道,下一个字有可能是,如果知道前两个字如果,第三个字就是的可能性大些,依次类推,如果知道前9个字如果不爱就不要再伤,那么最后一个就有可能是字。用图直观的表示如下。

基于char-rnn和tensorflow生成周杰伦歌词

seq2seq的模型,训练数据用的是周杰伦01年到11年所有歌的歌词,训练数据和代码可以从这里下载

关注微信公众号 datayx  然后回复 周杰伦 即可获取。

训练

python3 train_text.py


预测(生成文字)

python3 generate_text.py


可视化

在当前目录下运行tensorboard --logdir=logs可以可视化:

基于char-rnn和tensorflow生成周杰伦歌词

结果展示

基于char-rnn和tensorflow生成周杰伦歌词


阅读过本文的人还看了以下:

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

基于char-rnn和tensorflow生成周杰伦歌词

长按图片,识别二维码,点关注