PyTorch LSTM辍学vs Keras LSTM辍学

时间:2020-06-09 02:22:36

标签: python keras pytorch lstm

我正在尝试将我的顺序Keras网络移植到PyTorch。但是我在使用LSTM单元时遇到了麻烦:

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

我该如何在PyTorch中制定公式?尤其是辍学在PyTorch中的运作方式与在Keras中的运作方式大不相同。

1 个答案:

答案 0 :(得分:0)

以下应该适合您。

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

您需要设置input_size。请查看LSTM上的文档。


更新

在1层LSTM中,由于在多层LSTM模块中将中间层的输出应用于中间层,因此没有必要分配中间层。因此,如果num_layers设置为1,PyTorch可能会抱怨丢失。如果我们想在LSTM模块的最后一层的输出中应用丢失,我们可以执行以下操作。

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

根据上述定义,LSTM的输出将通过Dropout层。