RNN實現情感分類
二分類問題:Positive和Negative兩類
步驟:
1.加載IMDB數據集
2.加載預訓練詞向量:預訓練詞向量是對輸入單詞的數值化表示,通過nn.Embedding層,采用查表的方式,輸入單詞對應詞表中的index,獲得對應的表達向量。
3.數據集預處理
通過加載器加載的IMDB數據集進行了分詞處理,但不滿足構造訓練數據的需要,因此要對其進行額外的預處理。其中包含的預處理如下:通過Vocab將所有的Token處理為index id;將文本序列統一長度,不足的使用補齊,超出的進行截斷。
4.模型構建
nn.Embedding層加載Glove詞向量;然后使用RNN循環神經網絡做特征提取;最后將RNN連接至一個全連接層,即nn.Dense,將特征轉化為與分類數量相同的size.
5.預測Positive或Negative的二分類問題,選擇nn.BCEWithLogitsLoss(二分類交叉熵損失函數)。
6.訓練邏輯
- 讀取一個Batch的數據;
- 送入網絡,進行正向計算和反向傳播,更新權重;
- 返回loss。
7.評估邏輯:
- 讀取一個Batch的數據;
- 送入網絡,進行正向計算,獲得預測結果;
- 計算準確率。
8.模型訓練與保存
9.模型加載與測試
自定義輸入測試:
- 將輸入句子進行分詞;
- 使用詞表獲取對應的index id序列;
- index id序列轉為Tensor;
- 送入模型獲得預測結果;
- 打印輸出預測結果。
出現jupyter崩潰,清理內存重新運行
結果: