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

问题背景

将训练好的图片分类vgg模型用到新的数据集上进行图片分类的时候出现了以下问题:
训练好的vgg报错RuntimeError:mat1 and mat2 shapes cannot be multiplied(512*49 and 25088*4096)_第1张图片

解决方法

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

你可能感兴趣的:(pytorch模型构建,深度学习,pytorch,神经网络)