【发布时间】:2022-07-17 15:48:15
【问题描述】:
众所周知,pytorch 的 LSTM 实现是一个分层的双向 LSTM。
第一层的输入维度应该是 (L,N,H_in) 。如果我们使用双向 LSTM,那么第一层的输出是 (L, N, 2*H_hiddensize) official doc
我不知道这个输出是如何输入到第二个 LSTM 层的。 backforward层和forward层的输出会合并还是拼接?
我检查了其实现的源代码。 source code 但我没看懂。
layers = [_LSTMLayer(**self.input_size**, self.hidden_size,
self.bias, batch_first=False,
bidirectional=self.bidirectional, **factory_kwargs)]
for layer in range(1, num_layers):
layers.append(_LSTMLayer(**self.hidden_size**, self.hidden_size,
self.bias, batch_first=False,
bidirectional=self.bidirectional,
**factory_kwargs))
for idx, layer in enumerate(self.layers):
x, hxcx[idx] = layer(x, hxcx[idx])
为什么第一层的输出 (shape: L,N,2H_hiddensize) 可以输入到期望 (shape: L,N, H_hiddensize) 而不是 (shape: L,N,2) 的第二层H_hiddensize)
【问题讨论】: