Как мне представить PyTorch LSTM 3D Tensor? - PullRequest
2 голосов
/ 11 февраля 2020

В соответствии с документами , я вижу, что Pytorch’s LSTM expects all of its inputs to be 3D tensors. Я пытаюсь сделать простой LSTM от последовательности к последовательности, и у меня есть:

class BaselineLSTM(nn.Module):
    def __init__(self):
        super(BaselineLSTM, self).__init__()

        self.lstm = nn.LSTM(input_size=100, hidden_size=100)

    def forward(self, x):
        print('x', x)
        x = self.lstm(x)

        return x

My x.size() это torch.Size([100, 1]). Я ожидаю, что мне как-то нужно третье измерение, но я не уверен, что это на самом деле означает. Любая помощь будет принята с благодарностью.

1 Ответ

3 голосов
/ 11 февраля 2020

Форма ввода дополнительно уточняется в этом документе Pytorch, в разделе Inputs: input, (h_0, c_0). Первое измерение входного тензора, как ожидается, будет соответствовать длине последовательности, второе измерение - размеру пакета, а третье - входному размеру.

Так что для вашего примера, входной тензор x должен фактически быть размером (seq_length, batch_size, 100).

Вот подробное обсуждение на форуме Pytorch для получения более подробной информации: https://discuss.pytorch.org/t/why-3d-input-tensors-in-lstm/4455/9

...