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

文章讨论了在深度学习模型构建过程中,卷积层输出与全连接层输入参数不匹配导致的错误。作者指出,两个矩阵相乘要求列数与行数对应,并提供了解决方案:调整卷积层结构或修改全连接层的输入参数。最终建议初学者根据情况选择修改代码或调整网络结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

 

 找到报错的行:

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

self.liner(x)

 

 很容易就找到报错的地方了,他报错是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)

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值