簡體   English   中英

PyTorch LSTM 輟學與 Keras LSTM 輟學

[英]PyTorch LSTM dropout vs Keras LSTM dropout

我正在嘗試將我的順序 Keras 網絡移植到 PyTorch。 但我在使用 LSTM 單元時遇到了問題:

LSTM(512,
     stateful = False,
     return_sequences = True,
     dropout = 0.5),
LSTM(512,
     stateful = False,
     return_sequences = True,
     dropout = 0.5),

我應該如何在 PyTorch 中制定這個? 特別是 dropout 在 PyTorch 中的工作方式與在 Keras 中的工作方式截然不同。

以下內容應該適合您。

lstm = nn.LSTM(
    input_size = ?, 
    hidden_size = 512, 
    num_layers = 1,
    batch_first = True, 
    dropout = 0.5
)

您需要設置input_size 查看有關LSTM的文檔。


更新

在 1 層 LSTM 中,分配 dropout 沒有意義,因為 dropout 應用於多層 LSTM 模塊中的中間層的輸出。 因此,如果num_layers設置為 1,PyTorch 可能會抱怨 dropout。如果我們想在 LSTM 模塊的最后一層的 output 上應用 dropout,我們可以執行以下操作。

lstm = nn.Sequential(
    nn.LSTM(
        input_size = ?, 
        hidden_size = 512, 
        num_layers = 1,
        batch_first = True
    ),
    nn.Dropout(0.5)
)

根據上面的定義,LSTM的output會經過一個Dropout層。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM