作者wheado (principal component QQ)
看板DataScience
標題[問題] RNN(GRU)的memory在評估模型中如何工作?
時間Wed Dec 23 17:25:25 2020
作業系統:Linux
問題類別:RNN中的GRU
使用工具:Pytorch
問題內容:
初學者學習有關RNN在Forward中的過程,
對於memory在評估或是實際應用中如何工作有疑惑。
首先
假設我有一個Batch(6)資料,
其維度分別代表( seq_len(40), batch_size(6), embedding_dim(15) ),
可以理解成(句子長度, batch size, word vector向量長度)。
接著
假設我有一個GRU Layer,他是單向的,一層(沒有堆疊),memory的維度是7。
代碼如下
https://imgur.com/IJoQ9mE
在執行Forward中,我必須給一個初始化的memory,
根據batch(6)、單向、memory維度(7),
我的初始化memory是一個(1, 6, 7)的Tensor。
在執行完之後我會得到輸出值(y)以及更新的memory。
代碼如下
https://imgur.com/3Sr7DId
假設我之後接了一個Fully connected layer結束,使用Log loss當作損失函數。
Train了一發之後,我想找一筆測試資料(batch=1)來輸入給模型。
問題是
我在輸入模型的初始化memory應該選哪一個?
還是我根本不需要去選?但是不選的話,很奇怪。
或是我完全錯誤理解GRU的工作模式了?
請高手指教,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.168.199.15 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1608715527.A.872.html
推 winston82926: 如果用一開始rand出來的initial hidden vector (h_0 12/27 13:42
→ winston82926: ) train好後,就固定他不要動只要丟input (x)就好 12/27 13:42
推 patrick2dot0: pytorch document的nn.GRU有寫 12/27 13:59
→ patrick2dot0: Defaults to zero if not provided 12/27 14:00
→ wheado: 好的,謝謝各位 12/27 18:16
→ wheado: 所以如果我要隨機生成,我必須確保給個資料的h_0要一樣。 12/27 18:17