如何在PyTorch中正确实现Seq2Seq LSTM的填充?

问题描述 投票:0回答:1

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

谢谢。

nlp pytorch lstm recurrent-neural-network seq2seq
1个回答
0
投票

是,您是正确的。如果批量大小大于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,否则第一维实际上是序列长度,第二维是批处理大小。

该示例只是为了显示流程,但是的,我认为他们应该对此进行一点说明。

© www.soinside.com 2019 - 2024. All rights reserved.