用TensorFlow生成周杰伦歌词

我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

用TensorFlow生成周杰伦歌词

最近深度学习在机器视觉CV、自然语言处理NLP领域表现出强大的潜力,各种深度学习/机器学习框架也层出不穷。TensorFlow是google于去年(2015.11)开源的深度学习框架,截止目前(2016-11-28)Github上已经有38000+的star数,称之为最近最受欢迎的深度学习框架一点也不过分。

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

因为原作者的代码是基于torch写的,为了熟悉tensorflow,我就仔细地研究了一下具体代码,然后改写成基于tf的代码,github上也有基于TensorFlow的char-rnn-tensorflow,恕我直言,有以下三点比较膈应:

  1. 代码写的不够直观简洁
  2. 另外因为最新tensorflow的部分api有所变化
  3. 中英文之间有一些差异,看能否成功移植到处理中文上

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

基本原理

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

用TensorFlow生成周杰伦歌词

总的来说,这是一个seq2seq的模型,训练数据用的是周杰伦01年到11年所有歌的歌词,训练数据和代码我都放到Github上,可以从这里 下载

全部代码如下:

用TensorFlow生成周杰伦歌词 用TensorFlow生成周杰伦歌词 用TensorFlow生成周杰伦歌词 用TensorFlow生成周杰伦歌词 用TensorFlow生成周杰伦歌词 用TensorFlow生成周杰伦歌词 用TensorFlow生成周杰伦歌词 用TensorFlow生成周杰伦歌词 用TensorFlow生成周杰伦歌词

 

python3 gen_lyrics 0训练差不多10几分钟,然后运行python3 gen_lyrics.py 1生成的歌词如下:

用TensorFlow生成周杰伦歌词

End.

随意打赏

tensorflow项目tensorflow笔记tensorflow
提交建议
微信扫一扫,分享给好友吧。