基于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
恕我直言,有以下三点比较膈应:
代码写的不够直观简洁
另外因为最新tensorflow的部分api有所变化
中英文之间有一些差异,看能否成功移植到处理中文上
于是打算基于以上两个项目,自己重写!
基本原理
拿中文举例来说,每个字与每个字并不是统计上独立的,比如说如果不爱就不要再伤害
长度为10的序列,如果我们知道如
,下一个字有可能是果
,如果知道前两个字如果
,第三个字就是不
的可能性大些,依次类推,如果知道前9个字如果不爱就不要再伤
,那么最后一个就有可能是害
字。用图直观的表示如下。
seq2seq
的模型,训练数据用的是周杰伦01年到11年所有歌的歌词,训练数据和代码可以从这里下载
关注微信公众号 datayx 然后回复 周杰伦 即可获取。
训练
python3 train_text.py
预测(生成文字)
python3 generate_text.py
可视化
在当前目录下运行tensorboard --logdir=logs
可以可视化:
结果展示
阅读过本文的人还看了以下:
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
长按图片,识别二维码,点关注