训练好的vgg报错RuntimeError:mat1 and mat2 shapes cannot be multiplied(512*49 and 25088*4096)

问题背景

将训练好的图片分类vgg模型用到新的数据集上进行图片分类的时候出现了以下问题:
在这里插入图片描述

解决方法

结合VGG的网络架构:
在这里插入图片描述
发现池化层的输出张量为51277,对应报错的512*49,其无法与第一个全连接层FC1的权重系数相乘,继而和bias相加作为FC1的输出。但是在输出到全连接层之前,网络的forward函数中应当定义输入张量的处理过程,查看在VGG模型类的定义中:
在这里插入图片描述
存在x = torch.flatten(x, 1)存在展成一位张量效果的命令,再加上x = x.view(-1, 512*7*7)将将池化层的张量展成一维的命令,网络就跑通了。
这个是pytorch包里面自带的文件,之前使用用vgg=models.vgg19(pretrained='True'),再进行微调和训练也没有报错,但是这次确突然报错了,不知道是什么原因。记录一下踩坑之路,踩坑经验++(smile~)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值