3

我有以下一段代码。

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 处的张量大小不一致

请注意,当我在第 1 行打印张量形状时。3,我得到以下输出。

torch.size([1, 300]) torch.size([1, 1, 300]) 

为什么即使我使用了 view 方法,我的张量也会变[1, 300]好?embeddedview(1, 1, -1)

任何帮助,将不胜感激!

4

1 回答 1

2

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

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

concatenated_output = torch.cat((embedded, hidden[0]), 1)
于 2017-06-03T23:28:28.597 回答