我正在尝试将我的顺序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中的运作方式大不相同。
答案 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层。