Я разрабатываю модель BI-LSTM для анализа последовательности с использованием PyTorch.Для чего я использую torch.nn.LSTM
.Используя этот модуль, вы можете иметь несколько слоев, просто передав параметр num_layers
, равный количеству слоев (например, num_layers=2
).Однако все они будут иметь одинаковый hidden_size
, что частично хорошо для меня, я просто хочу, чтобы все они были одинаковыми hidden_size
, но последний слой с другимразмер.Ниже приведен базовый пример:
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)
Однако я не хочу этого делать, потому что я распараллеливаю модель использует DataParallel
, поэтому мне нужно, чтобы все было в одной упаковке.Я надеялся найти что-то похожее на keras, например:
rnn.add(LSTM, hidden_size=2)
Я проверил исходный код LSTM , но не смог найти то, что мне нужно.
Есть предложения?