[問題] pytorch LSTM output

看板DataScience作者 (小笨)時間4年前 (2019/07/27 11:41), 編輯推噓1(1017)
留言18則, 2人參與, 4年前最新討論串1/1
各位先進好,最近我在實驗用pytorch來寫模型 目前我的問題是我想用LSTM的output layer來當作feed forward network的input 我用這樣來unpack我的輸出 output, (hs, cs) = LSTM(x) 但是因為LSTM是兩層雙向的 因此hs就會變成2 * 2 想請問要怎麼只抽最上層的正向的state跟反向的state呢 也想請問有人做nlp的時候用過torchtext嗎? 因為目前網路上的tutorial都是一兩年前的,有些都沒跟上更新 我自己實驗來實驗去也沒很好的把資料用torchtext整理好 最後還是回到DataLoader,因此想問看看有沒有人有實作的例子可以參考的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 108.12.54.240 (美國) ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1564198917.A.7F6.html

07/27 16:05, 4年前 , 1F
hs.view(num_layers, 2, batch, hidden_size)[-1]
07/27 16:05, 1F

07/27 16:05, 4年前 , 2F
拿出來就會是forward的最後一個state + backward第一個
07/27 16:05, 2F

07/27 16:06, 4年前 , 3F
output.view(length, batch, 2, hidden_dim)[-1, :, 0,:]
07/27 16:06, 3F

07/27 16:06, 4年前 , 4F
output.view(length, batch, 2, hidden_dim)[0, :, 1,:]
07/27 16:06, 4F

07/27 16:06, 4年前 , 5F
等於上面這兩個的concatenation
07/27 16:06, 5F

07/27 16:07, 4年前 , 6F
文件在outputs的那個段落有提到該怎麼reshape:
07/27 16:07, 6F

07/27 16:07, 4年前 , 7F

07/27 16:09, 4年前 , 8F
torchtext的話可能可以爬爬看OpenNMT的code或是直接用?
07/27 16:09, 8F

07/27 16:12, 4年前 , 9F
我記得OpenNMT前陣子好像有refactor過data的部分 應該可
07/27 16:12, 9F

07/27 16:12, 4年前 , 10F
以當作參考
07/27 16:12, 10F

07/28 05:35, 4年前 , 11F
我有個疑問 我是不是應該要concat forward的最後一個與
07/28 05:35, 11F

07/28 05:36, 4年前 , 12F
backward的最後一個state 不然的話backward的第一個
07/28 05:36, 12F

07/28 05:36, 4年前 , 13F
不就只看過一個sequence的input嗎?
07/28 05:36, 13F

07/28 06:21, 4年前 , 14F
我找到這邊文章給需要的朋友參考
07/28 06:21, 14F

07/28 06:21, 4年前 , 15F
shorturl.at/lDY05
07/28 06:21, 15F

07/28 06:24, 4年前 , 16F
07/28 06:24, 16F

07/28 06:25, 4年前 , 17F
簡單來說 pytorch最後一個state的輸出已經是兩個方向
07/28 06:25, 17F

07/28 06:25, 4年前 , 18F
都看過所有輸入之後產生的hidden state
07/28 06:25, 18F
文章代碼(AID): #1TEyW5Vs (DataScience)