pytorch报错:RuntimeError: mat1 and mat2 shapes cannot be multiplied (64x2500 and 3020x1600)

相信同学们在刚接触深度学习的时候老会遇到类似的问题:

这个其实就是卷积层到全连接层之间的参数数量不对应的问题

卷积层的的输出结果是64*2500的矩阵,那么全连接层的第一个第一层的就应该是:2500*n

这样两个矩阵才可以相乘:

图例说明:(借鉴别人的图片@知乎史博)

pytorch报错:RuntimeError: mat1 and mat2 shapes cannot be multiplied (64x2500 and 3020x1600)_第1张图片

两个矩阵可以相乘,一定是 第一个矩阵的列数,等于第二个矩阵的行数

pytorch报错:RuntimeError: mat1 and mat2 shapes cannot be multiplied (64x2500 and 3020x1600)_第2张图片

 

 找到报错的行:

pytorch报错:RuntimeError: mat1 and mat2 shapes cannot be multiplied (64x2500 and 3020x1600)_第3张图片

 然后再找到这一行用到的函数:

self.liner(x)

 pytorch报错:RuntimeError: mat1 and mat2 shapes cannot be multiplied (64x2500 and 3020x1600)_第4张图片

 很容易就找到报错的地方了,他报错是64x2500 和3020x1600 乘不了

mat1 and mat2 shapes cannot be multiplied (64x2500 and 3020x1600)

解决方案:

1、改变卷积层结构,使其最后的输出等于3020,不过这个太麻烦了,不推荐

self.linear = torch.nn.Linear(3020, 1600, True)

2、直接改上面代码中 3020,改成2500

self.linear = torch.nn.Linear(2500, 1600, True)

有帮助到初学的小伙们的话,麻烦大家点个赞哦!!!

你可能感兴趣的:(pytorch,深度学习,人工智能)