我有以下代码。
embedded = self.embedding(input).view(1, 1, -1)
embedded = self.drop(embedded)
print(embedded[0].size(), hidden[0].size())
concatenated_output = torch.cat((embedded[0], hidden[0]), 1)
代码的最后一行给出了以下错误。
RuntimeError:/data/users/soumith/miniconda2/conda-bld/pytorch-0.1.9_1487344852722/work/torch/lib/THC/generic/THCTensorMath.cu:141
的张量大小不一致
请注意,当我在第号行打印张量形状时。 3,我得到以下输出。
torch.size([1, 300]) torch.size([1, 1, 300])
为什么我为[1, 300]
张量获得embedded
形状,即使我已将查看方法用作view(1, 1, -1)
?
任何帮助将不胜感激!
答案 0 :(得分:3)
embedded
是一个3d张量,hidden
是两个元素(隐藏状态和单元格状态)的元组,其中每个元素都是3d张量。 hidden
是LSTM图层的输出。在PyTorch中,LSTM将隐藏状态[h]和单元格状态[c]作为元组返回,这让我对错误感到困惑。
因此,我更新了代码的最后一行,如下所示,它解决了问题。
concatenated_output = torch.cat((embedded, hidden[0]), 1)