App下載

學(xué)會(huì)Python實(shí)現(xiàn)學(xué)寫(xiě)作

猿友 2018-08-06 18:41:31 瀏覽數(shù) (7178)
反饋

本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄

下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解

導(dǎo)語(yǔ)

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

就這樣吧~~~

0 人點(diǎn)贊