在此PyTorch tutorial中,尽管输入和输出具有可变长度,但他们没有使用填充。似乎工作正常,但是如何?如果输入的长度可变,我们是否应该执行填充?解决这个问题的正确方法是什么?
谢谢。
是,您是正确的。如果批量大小大于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
,否则第一维实际上是序列长度,第二维是批处理大小。
该示例只是为了显示流程,但是的,我认为他们应该对此进行一点说明。