看板 DataScience 關於我們 聯絡資訊
各位先進好,最近我在實驗用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
bulc381: hs.view(num_layers, 2, batch, hidden_size)[-1] 07/27 16:05
bulc381: 拿出來就會是forward的最後一個state + backward第一個 07/27 16:05
bulc381: output.view(length, batch, 2, hidden_dim)[-1, :, 0,:] 07/27 16:06
bulc381: output.view(length, batch, 2, hidden_dim)[0, :, 1,:] 07/27 16:06
bulc381: 等於上面這兩個的concatenation 07/27 16:06
bulc381: 文件在outputs的那個段落有提到該怎麼reshape: 07/27 16:07
bulc381: torchtext的話可能可以爬爬看OpenNMT的code或是直接用? 07/27 16:09
bulc381: 我記得OpenNMT前陣子好像有refactor過data的部分 應該可 07/27 16:12
bulc381: 以當作參考 07/27 16:12
clansoda: 我有個疑問 我是不是應該要concat forward的最後一個與 07/28 05:35
clansoda: backward的最後一個state 不然的話backward的第一個 07/28 05:36
clansoda: 不就只看過一個sequence的input嗎? 07/28 05:36
clansoda: 我找到這邊文章給需要的朋友參考 07/28 06:21
clansoda: shorturl.at/lDY05 07/28 06:21
clansoda: https://bit.ly/2zbpBO1 07/28 06:24
clansoda: 簡單來說 pytorch最後一個state的輸出已經是兩個方向 07/28 06:25
clansoda: 都看過所有輸入之後產生的hidden state 07/28 06:25