Как правильно реализовать заполнение для Seq2Seq LSTM в PyTorch? - PullRequest
0 голосов
/ 20 февраля 2020

В этом уроке PyTorch они не использовали заполнение, несмотря на наличие ввода и вывода переменной длины. Вроде нормально работает, но как? Разве мы не должны реализовывать заполнение, если вход имеет переменную длину? Как правильно go об этом?

Спасибо.

1 Ответ

0 голосов
/ 21 февраля 2020

Да, Вы правы. Входной тензор должен быть дополнен, если размер пакета больше 1, а последовательности имеют разные размеры.
Но пример генерирует входной тензор как

def inputTensor(line):
    tensor = torch.zeros(len(line), 1, n_letters) # <-- (<sequence_length>, <batch_size>, <input_dim>)
    for li in range(len(line)):
        letter = line[li]
        tensor[li][0][all_letters.find(letter)] = 1
    return tensor

В RNN, LSTM и GRU Pytorch, если batch_first=True не передано явно, 1-е измерение фактически является длиной последовательности, а 2-е измерение является размером партии.

Пример приведен только для того, чтобы показать поток, но да, я думаю, что они должны были поставить небольшую заметку об этом.

...