tensorflow(十二)利用seq2seq的Decoder-Encoder機制實現序列生成模型(下)

本文爲利用seq2seq實現單詞序列轉換的代碼,開發環境爲jupyter,tensorflow版本爲1.2.1
實驗數據和程序文件見鏈接:https://pan.baidu.com/s/1YDkaQFvWuKN8KAT1aQ4Z0A

一、預處理

1、引入必要的包


打開source和target兩個txt文件,並打印前十個數據

2、數據預處理

這個階段主要對每個字母映射爲唯一不同的數字

查看轉換後的結果,可見每個字母都被映射爲唯一的數字。

3、獲取輸入

4、定義Encoder層

5、定義decoder層輸入

6、定義decoder層
'''
這裏注意:如果tensorflow版本低於1.2.1,需要將 training_decoder_output, _,_ 和predicting_decoder_output, _,_分別改成training_decoder_output, _和predicting_decoder_output, _,_
原因是因爲1.2.1版本中 tf.contrib.seq2seq.dynamic_decode()函數返回三個參數。而低於1.2.1版本則只返回兩個參數。
'''


二、定義seq2seq模型

7、模型定義

8、定義超參數

9、構造graph

10、對batch中的序列進行補全

11、定義生成器,用來獲取batch

12、訓練並保存模型


13、訓練過程如下圖所示:

三、測試

14、對源數據進行轉換

15、測試圖片:

16、最終的輸出結果爲:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章