Вывод скрытого состояния в OpenNMT-py
У меня просто короткий вопрос относительно версии OpenNMT на pytorch. Похоже, что нет опции для возврата скрытого состояния кодера и декодера в опциях. Я пропускаю флаг или это не вариант в OpenNMT-py?
1 ответ
Что вы подразумеваете под кодером, а декодер не возвращает скрытое состояние?
Если вы видите 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, чтобы предсказать токены.
Существует несколько других типов кодеров / декодеров, которые вы можете изучить по следующим двум ссылкам.