为什么tensor.view()在pytorch中不起作用?

时间:2017-03-17 20:42:04

标签: pytorch

我有以下代码。

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)

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

embedded是一个3d张量,hidden是两个元素(隐藏状态和单元格状态)的元组,其中每个元素都是3d张量。 hidden是LSTM图层的输出。在PyTorch中,LSTM将隐藏状态[h]和单元格状态[c]作为元组返回,这让我对错误感到困惑。

因此,我更新了代码的最后一行,如下所示,它解决了问题。

concatenated_output = torch.cat((embedded, hidden[0]), 1)