作者clansoda (小笨)
看板DataScience
標題[問題] pytorch LSTM output
時間Sat Jul 27 11:41:53 2019
各位先進好,最近我在實驗用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://webptt.com/m.aspx?n=bbs/DataScience/M.1564198917.A.7F6.html
1F:推 bulc381: hs.view(num_layers, 2, batch, hidden_size)[-1] 07/27 16:05
2F:→ bulc381: 拿出來就會是forward的最後一個state + backward第一個 07/27 16:05
3F:→ bulc381: output.view(length, batch, 2, hidden_dim)[-1, :, 0,:] 07/27 16:06
4F:→ bulc381: output.view(length, batch, 2, hidden_dim)[0, :, 1,:] 07/27 16:06
5F:→ bulc381: 等於上面這兩個的concatenation 07/27 16:06
6F:→ bulc381: 文件在outputs的那個段落有提到該怎麼reshape: 07/27 16:07
8F:→ bulc381: torchtext的話可能可以爬爬看OpenNMT的code或是直接用? 07/27 16:09
9F:→ bulc381: 我記得OpenNMT前陣子好像有refactor過data的部分 應該可 07/27 16:12
10F:→ bulc381: 以當作參考 07/27 16:12
11F:→ clansoda: 我有個疑問 我是不是應該要concat forward的最後一個與 07/28 05:35
12F:→ clansoda: backward的最後一個state 不然的話backward的第一個 07/28 05:36
13F:→ clansoda: 不就只看過一個sequence的input嗎? 07/28 05:36
14F:→ clansoda: 我找到這邊文章給需要的朋友參考 07/28 06:21
15F:→ clansoda: shorturl.at/lDY05 07/28 06:21
17F:→ clansoda: 簡單來說 pytorch最後一個state的輸出已經是兩個方向 07/28 06:25
18F:→ clansoda: 都看過所有輸入之後產生的hidden state 07/28 06:25