Что вы подразумеваете под кодером, а декодер не возвращает скрытое состояние?
Если вы видите RNNEncoder , он возвращает encoder_final, memory_bank, lengths
, где memory_bank
представляет скрытое состояние, имеющее форму seq_len x batch_size x hidden_size
. И encoder_final
обычно используется декодером в модели от последовательности к последовательности.
Теперь давайте посмотрим на RNNDecoder . Как мы видим, метод forward () возвращает FlaotTensor и словарь FlaotTensors.
(FloatTensor, dict[str, FloatTensor]):
* dec_outs: output from the decoder (after attn)
``(tgt_len, batch, hidden)``.
* attns: distribution over src at each tgt
``(tgt_len, batch, src_len)``.
Обычно мы используем dec_outs
в задачах от последовательности к последовательности. Например, в задачах генерации естественного языка мы подаем dec_outs
в слой softmax для прогнозирования токенов.
Существует несколько других типов кодеров / декодеров, которые вы можете изучить по следующим двум ссылкам.