iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 9
1
自我挑戰組

自然語言技術與AI/ML初探系列 第 9

RNN (下)

首先先在命令提示字元確認已安裝tensorflow

Git clone https://github.com/GitYCC/Tensorflow_Tutorial.git

這個tutorial示範如何實作LSTM文章產生器,機器可以不斷的根據前文猜測下一個「字母」,如此一來只要給個開頭字母,LSTM就可以幫補成一篇文章,amazing.

引用函式庫
https://ithelp.ithome.com.tw/upload/images/20181024/201125381zqu7I7KTE.png

建立字母庫:
https://ithelp.ithome.com.tw/upload/images/20181024/20112538xBQDndeoSK.png

印出
https://ithelp.ithome.com.tw/upload/images/20181024/20112538hNawSil5Md.png

模型輸入資料之batch data準備示意說明如下圖
https://ithelp.ithome.com.tw/upload/images/20181024/20112538nn8eUtYooq.png

如上圖例,Batch Size=2所以餵2個字母進去,那這些不相干的字母在取樣的時候,我們會盡量讓它平均分配在文字庫,才能確保彼此之間不相干,以增加LSTM的訓練效率和效果。

https://ithelp.ithome.com.tw/upload/images/20181024/20112538bLrAnukPDo.png

產生的training data如下:
https://ithelp.ithome.com.tw/upload/images/20181024/20112538TdUS37LLyc.png

定義模型函數
包含
Sample_distribution: uniform分配(0~1)
Sample:將預測輸出轉換成1-hot encoded samples
Logprob:log機率轉換
https://ithelp.ithome.com.tw/upload/images/20181024/20112538tN01qRPhtl.png

進入到建立LSTM Model階段
其中LSTM隱藏層神經元的部分在這裡,可對照上一篇模型介紹的hidden node概念圖
https://ithelp.ithome.com.tw/upload/images/20181024/20112538eRKsi57YKN.png

LSTM內的Gate參數設定如以下code

https://ithelp.ithome.com.tw/upload/images/20181024/20112538ifz57cMNaj.png

會跑一陣子…(機器吶喊中)
以下是訓練過程的log

https://ithelp.ithome.com.tw/upload/images/20181024/20112538oFlKeVoqHT.png

最後幾個epoch
https://ithelp.ithome.com.tw/upload/images/20181024/20112538TRXGLatg7Y.png

用法:輸入字母m,產生一篇m開頭的1000字文章
print(model_LSTM.generate(c='m',len_generate=1000))

結果輸出如下
https://ithelp.ithome.com.tw/upload/images/20181024/20112538Ingoa8fzaa.png

參考來源
實作Tensorflow (6):Recurrent Neural Networks (RNN) and Long Short-Term Memory (LSTM)
https://www.ycc.idv.tw/tensorflow-tutorial_6.html
Github
https://github.com/GitYCC/Tensorflow_Tutorial


上一篇
RNN (上)
下一篇
CNN和RNN比較
系列文
自然語言技術與AI/ML初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言