C語言中文網 目錄
TensorFlow
1 TensorFlow是什么
2 TensorFlow安裝和下載
3 第一個TensorFlow程序
4 TensorFlow程序結構
5 TensorFlow常量、變量和占位符
6 TensorFlow矩陣基本操作
7 TensorFlow TensorBoard數據流圖可視化
8 TensorFlow代碼自動升級為1.0版本
9 TensorFlow XLA
10 TensorFlow指定CPU和GPU設備
11 TensorFlow與深度學習
12 TensorFlow常用Python擴展包
13 回歸算法有哪些
14 TensorFlow損失函數
15 TensorFlow優化器
16 TensorFlow csv文件讀取數據
17 TensorFlow實現簡單線性回歸
18 TensorFlow實現多元線性回歸
19 TensorFlow邏輯回歸處理MNIST數據集
20 感知機與神經網絡
21 TensorFlow常用激活函數(6種)
22 TensorFlow實現單層感知機
23 TensorFlow實現反向傳播算法
24 TensorFlow多層感知機實現MINIST分類
25 TensorFlow多層感知機函數逼近
26 TensorFlow超參數
27 TensorFlow Keras
28 CNN卷積神經網絡
29 三維卷積神經網絡預測MNIST數字
30 卷積神經網絡分類圖片
31 遷移學習
32 DeepDream網絡
33 TensorFlow實現文本情感分析
34 VGG網絡濾波器
35 VGGNet、ResNet、Inception和Xception
36 預建深度學習提取特征及實現
37 TensorFlow實現InceptionV3
38 TensorFlow WaveNet聲音合成
39 TensorFlow視頻分類(6種方法)
40 RNN循環神經網絡
41 神經機器翻譯(seq2seq RNN)
42 注意力機制(基于seq2seq RNN)
43 RNN訓練模型并生成文本
44 RNN循環神經網絡實現預測比特幣價格
45 主成分分析法(PCA)
46 k均值聚類算法
47 SOM自組織映射法
48 受限玻爾茲曼機訓練
49 推薦系統的實現(基于RBM)
50 基于DBN實現情緒檢測
51 自編碼器
52 標準自編碼器
53 稀疏自編碼器
54 去燥自編碼器
55 卷積自編碼器
56 堆疊自編碼器
57 強化學習
58 OpenAI Gym安裝和使用
59 全連接神經網絡實現玩Pac-Man游戲
60 Q learning實現Cart-Pole平衡游戲
61 DQN算法(深度Q網絡)
62 David Silver策略梯度算法
63 深度學習在移動端的應用
64 Android移動端部署TensorFlow mobile
65 iPhone移動端部署TensorFlow mobile
66 移動端優化TensorFlow代碼
67 GAN生成式對抗網絡
68 GAN生成式對抗網絡虛構MNIST圖像
69 DCGAN虛構MNIST圖像
70 DCGAN虛構名人面孔和其他數據集
71 VAE變分自編碼器
72 CapsNet膠囊網絡
73 TensorFlow分布式
74 TensorFlow GPU的安裝和使用
75 TensorFlow分布式
76 TensorFlow分布式訓練MNIST分類器
77 TensorFlow Serving運行Docker容器
78 TensorFlow分布式在谷歌云平臺運行
79 TensorFlow分布式在谷歌CloudML運行
80 TensorFlow分布式在Microsoft Azure上運行
81 TensorFlow分布式在Amazon AWS上運行
首頁 > TensorFlow 閱讀:113

RNN訓練模型并生成文本過程詳解

在本節中,我們將學習如何生成類似于莎士比亞風格的文本。核心思想非常簡單:以莎士比亞寫的真實文本作為輸入,并輸入到即將要訓練的 RNN 中;然后,用訓練好的模型來生成新文本,這些文本看起來像是英國最偉大的作家所寫的。

為了簡單起見,這里將使用基于 TensorFlow 運行的框架 TFLearn,這里所使用的例子只是標準版的一部分(參考https://github.com/tflearn/tflearn/blob/master/examples/nlp/lstm_generator_shakespeare.py),所開發的模型是字符級 RNN 語言模型,考慮的序列則是字符序列而不是單詞序列。

具體做法

  1. 用 pip 方式安裝 TFLearn:


     
  2. 導入一些有用的模塊,并下載莎士比亞寫的文本。本例使用的文本位于https://raw.githubusercontent.com/tflearn/tflearn.github.io/master/resources/shakespeare_input.txt


     
  3. 將輸入文本轉換為向量,并通過 string_to_semi_redundant_sequences() 返回解析的序列和目標以及關聯的字典(函數輸出一個元組:包括輸入、目標和字典):


     
  4. 定義由三個 LSTM 組成的 RNN,每個 LTSM 有 512 個節點,并返回完整序列而不是僅返回最后一個序列。請注意,使用概率為 50% 的 drop-out 模塊來連接 LSTM 模塊。最后一層是全連接層,softmax 長度等于字典尺寸。損失函數采用 categorical_crossentropy,優化器采用 Adam:


     
  5. 現在可以用庫函數 flearn.models.generator.SequenceGenerator(network,dictionary=char_idx,seq_maxlen=maxle,clip_gradients=5.0,checkpoint_path='model_shakespeare') 生成序列:


     
  6. 經過 50 次迭代,從輸入文本中選取一個隨機序列并生成一個新的文本。溫度參數控制所創建序列的多樣性;接近于 0 的溫度創建的序列看起來就像用于訓練的樣本,溫度越高,結果越多樣:


     

解讀分析

當一件新的未知或遺忘的藝術作品需要被鑒定歸于某位作者時,就會有著名學者將這件作品與作者的其他作品進行比較。學者們所做的是在作者已知作品的文本序列中尋找共同特征,并希望在鑒定作品中找到相似的特征。

本節的工作方式與之前的相似:RNN 學習莎士比亞作品中的特征,然后這些特征被用來產生新的、從未見過的文本,這些文本很好地代表了最偉大的英國作家的寫作風格。來看執行示例:



第一次迭代,此時,網絡正在學習一些基本結構,包括虛擬人物(DIA、SURYONT、HRNTLGIPRMAR和ARILEN)的對話,但是英語水平還很糟糕,很多單詞并不是真正的英文:



經過幾次迭代,此時,網絡正在學習對話的正確結構,使寫出來的英語看起來更像正確的句子,例如:Well,there shall the things to need the offer to our heart和There is not that be so then to the death To make the body and all the mind:


精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo