相信同学们在刚接触深度学习的时候老会遇到类似的问题:
这个其实就是卷积层到全连接层之间的参数数量不对应的问题
卷积层的的输出结果是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)
有帮助到初学的小伙们的话,麻烦大家点个赞哦!!!