看板 DataScience 關於我們 聯絡資訊
作業系統: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