查看: 1981|回复: 4

RuntimeError: inconsistent tensor size at /Users/soumith/code/builder/wheel/p...

[复制链接]

3

主题

31

帖子

83

积分

注册会员

Rank: 2

积分
83
发表于 2018-9-20 15:38:41 | 显示全部楼层 |阅读模式
在numpy中,我可以像这样做一个简单的矩阵乘法:
  1. a = numpy.arange(2*3).reshape(3,2)
  2. b = numpy.arange(2).reshape(2,1)
  3. print(a)
  4. print(b)
  5. print(a.dot(b))
复制代码

然而,当我尝试用pytorch张量时,这是行不通的:
  1. a = torch.Tensor([[1, 2, 3], [1, 2, 3]]).view(-1, 2)
  2. b = torch.Tensor([[2, 1]]).view(2, -1)
  3. print(a)
  4. print(a.size())

  5. print(b)
  6. print(b.size())

  7. print(torch.dot(a, b))
复制代码

这段代码抛出以下错误:
RuntimeError: inconsistent tensor size at /Users/soumith/code/builder/wheel/pytorch-src/torch/lib/TH/generic/THTensorMath.c:503
回复

使用道具 举报

11

主题

63

帖子

159

积分

注册会员

Rank: 2

积分
159
发表于 2018-9-20 15:40:16 | 显示全部楼层
使用下面代码
  1. torch.mm(a,b)
复制代码

torch.dot()与np.dot()的行为不同。具体来说,torch.dot()将a和b都视为1D向量(不管它们最初的形状如何),并计算它们的内积。这个错误被抛出,因为这个行为使得a是长度为6的向量而b是长度为2的向量;因此它们的内积无法计算。对于PyTorch的矩阵乘法,使用torch.mm()。相反,Numpy的np.dot()更灵活;它计算一维数组的内积,并对二维arra执行矩阵乘法
回复

使用道具 举报

10

主题

57

帖子

143

积分

注册会员

Rank: 2

积分
143
发表于 2018-10-9 08:28:32 | 显示全部楼层
收到收到
回复

使用道具 举报

10

主题

72

帖子

180

积分

注册会员

Rank: 2

积分
180
发表于 2018-10-11 08:30:17 | 显示全部楼层
搞定了,3q
回复

使用道具 举报

5

主题

41

帖子

108

积分

注册会员

Rank: 2

积分
108
发表于 2018-10-12 09:11:22 | 显示全部楼层
原来是这样=-=
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表