[英]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.