为什么tensor.view()在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: inconsistent tensor sizes at /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]形状,即使我已经将视图方法用作视图(1,1,-1)?

任何帮助,将不胜感激!

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

所以,我更新了代码的最后一行,如下所示,它解决了这个问题.

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