
PyTorch是當前主流深度學習框架之一,其設計追求最少的封裝、最直觀的設計,其簡潔優美的特性使得PyTorch代碼更易理解,對新手非常友好。
本文為實戰篇,介紹基於RNN的文本分類,掃描文中的二維碼可觀看視頻講解(限免3天)。
本文將構建和訓練基本的字符級RNN(遞歸神經網絡)來對單詞進行分類。展示如何「從頭開始」進行NLP(自然語言處理)建模的預處理數據,尤其是不使用眾多NLP工具庫提供的許多便利功能,因此讀者可以從系統層面角度了解NLP建模的預處理工作。
字符級RNN將單詞作為一系列字符讀取,之後在每個步驟輸出一個預測結果和「Hidden State」,將其先前的Hidden State輸入每個下一步。這裡將最終的預測作為輸出,即單詞屬於哪個類別。
具體來說,這裡將訓練來自18種起源於不同語言的數千種姓氏,並根據拼寫方式預測名稱的來源,樣例如下。

1
數據準備
數據下載超鏈接:https://download.pytorch.org/tutorial/data.zip。
解壓縮上述數據得到18個txt文件,將它們放置在data/names目錄下。下面提供一段代碼做預處理。
上述代碼輸出如下。
2
將名字轉換為張量
現在已經整理好了所有數據集中的名字,這裡需要將它們轉換為張量以使用它們。為了表示單個字母,這裡使用大小為<1×n_letters>的「one-hot」向量。一個one-hot向量用0填充,但當前字母的索引處的數字為1,例如 「 b」=<0 1 0 0 0 …>。為了用這些向量組成一個單詞,這裡將其中的一些連接成2維矩陣<line_length × 1 × n_letters>。
可以觀察到數據的維度是<line_length×1×n_letters>,而不是<line_length×n_letters>,是因為額外的1維是因為PyTorch假設所有內容都是批量的——在這裡只使用1的batchsize。
代碼如下。
輸出如下。
3
構建神經網絡
在PyTorch中構建遞歸神經網絡(RNN)涉及在多個時間步長上克隆多個RNN層的參數。RNN層保留了Hidden State和梯度,這些狀態完全由PyTorch的計算圖來自動完成維護。這意味着讀者可以以非常「純粹」的方式實現RNN,即只關心前饋網絡(Feed-forward Network)而不需要關注反向傳播(Back Propagation)。
下面樣例中的RNN模塊只有兩個線性層,它接受一個輸入和一個Hidden State,之後網絡輸出結果需要經過一個LogSoftmax層。RNN模型如圖11.1所示。
■圖11.1RNN模型
RNN代碼定義如下。

實操可掃碼觀看(限免3天)
實例講解
PyTorch深度學習實戰

下期預告
深度學習簡介
1. 計算機視覺
2. 自然語言處理
3. 強化學習
深度學習框架
4. PyTorch
PyTorch環境搭建
5. PyTorch環境搭建(Linux和Windows平台)
實戰篇
4
參考書籍

《PyTorch深度學習實戰-微課視頻版》
數學基礎和深度學習知識點與8個完整的實戰案例相結合,配有詳細的視頻講解,手把手帶你通關深度學習。
ISBN:9787302568209
作者:呂雲翔 劉卓然 主編 關捷雄 歐陽植昊 楊卓謙 華昱雲 陳妙然 黎昆昌 呂可馨 王淥汀 副主編
價格:59.90元
掃碼微店優惠購書
內容簡介
本書在內容安排上十分精良,為便於數學基礎較薄弱的讀者學習,引入了深度學習數學基礎;再由淺入深地以實戰案例講解的方式,對於誤差反向傳播法、卷積運算等進行詳細剖析,使讀者在實現層面上理解;此外還加入了前沿技術,如Batch Normalization等內容。本書提供了8個完整的項目案例、完整的構建過程、詳細的視頻講解以及相應源代碼,使讀者能在實戰案例中,深入完成深度學習的學習與掌握。
5
精彩推薦