У меня возникли проблемы с пониманием документации для модуля PyTorch LSTM (а также RNN и GRU, которые похожи). Что касается результатов, в нем говорится:
Выходы: вывод, (h_n, c_n)
- output (seq_len, batch, hidden_size * num_directions): тензор, содержащий выходные характеристики (h_t) из последнего уровня RNN, для каждого t. Если в качестве входного сигнала указано значение параметра torch.nn.utils.rnn.PackedSequence, выход также будет упакованной последовательностью.
- h_n (num_layers * num_directions, batch, hidden_size): тензор, содержащий скрытое состояние для t = seq_len
- c_n (num_layers * num_directions, batch, hidden_size): тензор, содержащий состояние ячейки для t = seq_len
Кажется, что output
значения переменных и h_n
дают значения скрытого состояния. h_n
просто избыточно предоставляет последний шаг времени, который уже включен в output
, или есть что-то еще для этого, чем это?