【问题标题】:How to properly implement padding for Seq2Seq LSTM in PyTorch?如何在 PyTorch 中正确实现 Seq2Seq LSTM 的填充?
【发布时间】:2020-06-05 03:12:02
【问题描述】:

在这个PyTorch tutorial 中,尽管输入和输出长度可变,但他们没有使用填充。它似乎工作正常,但如何?如果输入是可变长度的,我们不应该实现填充吗?解决这个问题的正确方法是什么?

谢谢。

【问题讨论】:

    标签: nlp pytorch lstm recurrent-neural-network seq2seq


    【解决方案1】:

    是的,你是对的。如果批量大小大于 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
    

    在 pytorch 的 RNN、LSTM 和 GRU 中,除非显式传递 batch_first=True,否则第 1 维实际上是序列长度,第 2 维是批量大小。

    这个例子只是为了展示流程,但是我认为他们应该对此做一个小说明。

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 2020-09-18
      • 2019-11-18
      • 2018-08-10
      • 1970-01-01
      • 2022-07-17
      • 2019-08-19
      • 1970-01-01
      • 2020-09-18
      相关资源
      最近更新 更多