[問題] RNN(GRU)的memory在評估模型中如何工作?

看板DataScience作者 (principal component QQ)時間3年前 (2020/12/23 17:25), 編輯推噓2(204)
留言6則, 3人參與, 3年前最新討論串1/1
作業系統: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

12/27 13:42, 3年前 , 1F
如果用一開始rand出來的initial hidden vector (h_0
12/27 13:42, 1F

12/27 13:42, 3年前 , 2F
) train好後,就固定他不要動只要丟input (x)就好
12/27 13:42, 2F

12/27 13:59, 3年前 , 3F
pytorch document的nn.GRU有寫
12/27 13:59, 3F

12/27 14:00, 3年前 , 4F
Defaults to zero if not provided
12/27 14:00, 4F

12/27 18:16, 3年前 , 5F
好的,謝謝各位
12/27 18:16, 5F

12/27 18:17, 3年前 , 6F
所以如果我要隨機生成,我必須確保給個資料的h_0要一樣。
12/27 18:17, 6F
文章代碼(AID): #1Vumq7Xo (DataScience)
文章代碼(AID): #1Vumq7Xo (DataScience)