Python3实现写作
本文转载至知乎ID:Charles(白露未晞)知乎个人专栏
下载W3Cschool手机App,0基础随时随地学编程>>戳此了解
导语
T_T没有科研梦想的人半夜过来水篇文章~~~
让Python学会写写歌,创创作~~~
纯属娱乐~~~
改编自PyTorch官网的一个教程,不过我用TF写的,然后生成英文变成了生成中文~~~
Let's Go~~~
相关文件
百度网盘下载链接: https://pan.baidu.com/s/1VUEFR82CqyDj2w9SS4xnFA
密码: 3dmx
开发工具
Python版本:3.6.4
相关模块:tensorflow-gpu模块;numpy模块;以及一些Python自带的模块。
其中TensorFlow-GPU版本为:
1.6.0
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
原理简介
关于RNN的介绍,请参考我之前的文章:
Python实现简单的机器翻译模型(点击蓝字进入)
这里我们使用Char RNN模型进行训练。
即Seq2Seq模型中的特殊情况输入与输出等长。
也就是类似下图的样子(图源网络):
具体实现过程详见相关文件中的源代码。
使用演示
在cmd窗口运行Char_RNN.py文件并根据提示输入相关信息即可。
训练相关的参数请在config.py文件中调整:
训练所用的数据路径以及生成新文本所用的预热数据请在Char_RNN.py文件中调整:
训练演示视频:
因为时间太长了,我只录了训练的前面一部分。
最终训练结果如下图所示:
结果展示
因为时间和资源有限。
这里只展示周杰伦的所有歌词作为样本进行训练之后测试的结果。
当然你完全可以找其他文本作为训练语料来生成风格各异的“文章”,“歌词”等等~~~
结果如下:
(预热歌词为:是曾与你躲过雨的屋檐)
好吧我并不知道它在说啥T_T
一个失败的案例T_T
大概是模型太low了。而且训练数据是我从网上直接下载的,也没有预处理过T_T。中间竟然突然冒出一个括号我也是颓了T_T
更多
随便玩玩的T_T~~~
有兴趣的同学可以试着换更复杂的模型~~~
然后训练的语料最好处理一下~~~
好久没写TF了,代码可能写的有点糟糕T_T
就这样吧~~~
更多建议: