每批具有不同输入尺寸的Lstm(pyTorch)

每批具有不同输入尺寸的Lstm(pyTorch),pytorch,Pytorch,我正在从TensorFlow切换到PyTorch,我的网络出现了一些问题 我制作了一个Collator(用于数据加载器),它将每个批次中的每个张量(最初的句子)填充到每个批次的Maslen中 因此,我每批都有不同的输入大小 我的网络由LSTM->LSTM->DENSE组成 我的问题是,如何将此变量输入大小指定给LSTM 我假设在TensorFlow中,我会在LSTM中输入((无,x)) 提前感谢LSTM的输入大小不是样本的长度。假设你有一批三个样本:第一个样本长度为10,第二个样本长度为12,第

我正在从TensorFlow切换到PyTorch,我的网络出现了一些问题

我制作了一个Collator(用于数据加载器),它将每个批次中的每个张量(最初的句子)填充到每个批次的Maslen中

因此,我每批都有不同的输入大小

我的网络由LSTM->LSTM->DENSE组成

我的问题是,如何将此变量输入大小指定给LSTM

我假设在TensorFlow中,我会在LSTM中输入((无,x))


提前感谢

LSTM的输入大小不是样本的长度。假设你有一批三个样本:第一个样本长度为10,第二个样本长度为12,第三个样本长度为15。所以你已经做的是用零填充它们,这样所有三个都有15号。但下一批可能已经被填充到16。当然 但这15不是LSTM的输入大小。批次中样本的一个元素大小中的输入大小。这应该永远是一样的。 例如,当您要对名称进行分类时: 输入是名称,例如“joe”、“mark”、“lucas”。 但是LSTM作为输入的是字符。那么“J”和“o”等等。因此,作为输入大小,您必须输入一个字符的维数。 如果使用嵌入,则为嵌入大小。当您使用一个热编码时,向量大小(可能为26)。LSTM迭代地获取单词的字符。不是一下子把整个词都说出来的

self.lstm = nn.LSTM(input_size=embedding_size, ...)

我希望这回答了你的问题,如果没有请澄清它!祝你好运

嗨,事实上,在我发布这个问题后,我自己也理解了这一点,这是它在每个框架中的工作方式,我不知道为什么我一开始就感到困惑。但是,我真的很感谢你详细的回答。非常感谢。