我正在使用PyTorch开发用于序列分析的BI-LSTM模型 . 我正在使用torch.nn.LSTM . 使用该模块,只需将参数 num_layers
传递给层数(例如, num_layers=2
)即可拥有多个图层 . 但是所有这些都有相同的 hidden_size
,这对我来说是部分罚款,我只想让它们全部相同 hidden_size
but 最后一层具有不同的大小 . 基本示例如下:
rnn = nn.LSTM(input_size=10, hidden_size=20, num_layers=2)
inp = torch.randn(5, 3, 10)
h0 = torch.randn(2, 3, 20)
c0 = torch.randn(2, 3, 20)
output, (hn, cn) = rnn(inp, (h0, c0))
输出暗淡是( 5, 3,
20 )
一个解决方案(但对我不利)是实现额外的模型,输出我需要的维度并从第一个模型中获取输入,例如:
rnn_two = nn.LSTM(input_size=20, hidden_size=2)
output2, _ = rnn_two(output)
但是,我不想这样做,因为我 parallelize 模型使用DataParallel,所以我需要所有的一个包 . 我希望找到类似于keras的东西,例如:
rnn.add(LSTM, hidden_size=2)
我检查了LSTM source code但找不到我需要的东西 .
有什么建议?
2 回答
如果我没有弄错,可以这样做:
尽管@Mikhail Berlinkov的答案是按照需要运作的,但它并不是一般情况(在问题中甚至没有要求),我想提出第二个解决方案:
可以称为:
output.shape
等于预期值(即5,3,2
)