本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄
本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄
下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解
導(dǎo)語(yǔ)
下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解
T_T沒(méi)有科研夢(mèng)想的人半夜過(guò)來(lái)水篇文章~~~
讓Python學(xué)會(huì)寫(xiě)寫(xiě)歌,創(chuàng)創(chuàng)作~~~
純屬娛樂(lè)~~~
改編自PyTorch官網(wǎng)的一個(gè)教程,不過(guò)我用TF寫(xiě)的,然后生成英文變成了生成中文~~~
Let's Go~~~
相關(guān)文件
百度網(wǎng)盤下載鏈接: https://pan.baidu.com/s/1VUEFR82CqyDj2w9SS4xnFA
密碼: 3dmx
開(kāi)發(fā)工具
Python版本:3.6.4
相關(guān)模塊:
tensorflow-gpu模塊;
numpy模塊;
以及一些Python自帶的模塊。
其中TensorFlow-GPU版本為:
1.6.0
環(huán)境搭建
安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。
原理簡(jiǎn)介
關(guān)于RNN的介紹,請(qǐng)參考我之前的文章:
Python實(shí)現(xiàn)簡(jiǎn)單的機(jī)器翻譯模型(點(diǎn)擊藍(lán)字進(jìn)入)
這里我們使用Char RNN模型進(jìn)行訓(xùn)練。
即Seq2Seq模型中的特殊情況輸入與輸出等長(zhǎng)。
也就是類似下圖的樣子(圖源網(wǎng)絡(luò)):
具體實(shí)現(xiàn)過(guò)程詳見(jiàn)相關(guān)文件中的源代碼。
使用演示
在cmd窗口運(yùn)行Char_RNN.py文件并根據(jù)提示輸入相關(guān)信息即可。
訓(xùn)練相關(guān)的參數(shù)請(qǐng)?jiān)?strong style="box-sizing: border-box;">config.py文件中調(diào)整:
訓(xùn)練所用的數(shù)據(jù)路徑以及生成新文本所用的預(yù)熱數(shù)據(jù)請(qǐng)?jiān)?strong style="box-sizing: border-box;">Char_RNN.py文件中調(diào)整:
訓(xùn)練演示視頻:
因?yàn)闀r(shí)間太長(zhǎng)了,我只錄了訓(xùn)練的前面一部分。
最終訓(xùn)練結(jié)果如下圖所示:
結(jié)果展示
因?yàn)闀r(shí)間和資源有限。
這里只展示周杰倫的所有歌詞作為樣本進(jìn)行訓(xùn)練之后測(cè)試的結(jié)果。
當(dāng)然你完全可以找其他文本作為訓(xùn)練語(yǔ)料來(lái)生成風(fēng)格各異的“文章”,“歌詞”等等~~~
結(jié)果如下:
(預(yù)熱歌詞為:是曾與你躲過(guò)雨的屋檐)
好吧我并不知道它在說(shuō)啥T_T
一個(gè)失敗的案例T_T
大概是模型太low了。而且訓(xùn)練數(shù)據(jù)是我從網(wǎng)上直接下載的,也沒(méi)有預(yù)處理過(guò)T_T。中間竟然突然冒出一個(gè)括號(hào)我也是頹了T_T
更多
隨便玩玩的T_T~~~
有興趣的同學(xué)可以試著換更復(fù)雜的模型~~~
然后訓(xùn)練的語(yǔ)料最好處理一下~~~
好久沒(méi)寫(xiě)TF了,代碼可能寫(xiě)的有點(diǎn)糟糕T_T
就這樣吧~~~