【发布时间】:2020-06-05 03:12:02
【问题描述】:
在这个PyTorch tutorial 中,尽管输入和输出长度可变,但他们没有使用填充。它似乎工作正常,但如何?如果输入是可变长度的,我们不应该实现填充吗?解决这个问题的正确方法是什么?
谢谢。
【问题讨论】:
标签: nlp pytorch lstm recurrent-neural-network seq2seq
在这个PyTorch tutorial 中,尽管输入和输出长度可变,但他们没有使用填充。它似乎工作正常,但如何?如果输入是可变长度的,我们不应该实现填充吗?解决这个问题的正确方法是什么?
谢谢。
【问题讨论】:
标签: nlp pytorch lstm recurrent-neural-network seq2seq
是的,你是对的。如果批量大小大于 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 维是批量大小。
这个例子只是为了展示流程,但是我认为他们应该对此做一个小说明。
【讨论】: