这是一次低级错误,是我第一次使用ResNet预测。
完整的错误记录如下:
RuntimeError: Error(s) in loading state_dict for ResNet:
size mismatch for fc.weight: copying a param with shape torch.Size([5, 512]) from checkpoint, the shape in current model is torch.Size([4, 512]).
size mismatch for fc.bias: copying a param with shape torch.Size([5]) from checkpoint, the shape in current model is torch.Size([4]).
可以看到上述错误的出现主要是因为ResNet,参数的调整。对于原项目的图像来说,是花朵的分类。其中将花朵分为5类。而我这次项目所需的分类是四类,所以就出现了代码参数的错误。
这个时候刷到了帖子 :
最后的 解决方法,就是将训练代码重新改一下参数就好了,代码中类别的数量,需要和数据集的图片类别相对应后再重新训练。
就是将下面代码的‘4’改成对应的类别数就可以啦:
net.fc = nn.Linear(in_channel, 4)