我们的任务是,把pytorch的torchvision.models 模块中现有的分类模型包括权重,拿来。然后用一张图片去预测类别。
提前去下载好squeezenet1_1-f364aa15.pth,放到自己pytorch的安装路径里,比如我的是下面的pthfile
下载方式:https://github.com/pytorch/vision/tree/master/torchvision/models
找到对应模型名称点进去找地址
import torch
import torchvision.models as models
pthfile = r'G:\Anaconda3\envs\pytorch\Lib\site-packages\torchvision\models\squeezenet1_1-f364aa15.pth'
net = torch.load(pthfile)
print(net)
这是权重文件
OrderedDict([(‘features.0.weight’, tensor([[[[ 1.2094e-01, 1.7803e-01, -1.5971e-02],
[ 2.6995e-01, 3.4009e-01, 7.6897e-02],
[ 1.3524e-01, 1.5867e-01, -2.9714e-02]],
[[-3.1629e-01, -3.5250e-01, -2.3707e-01],
[-4.1020e-01, -4.3460e-01, -2.9274e-01],
[-3.4065e-01, -3.6389e-01, -2.3710e-01]],
[[ 1.6492e-01, 1.7115e-01, 2.4033e-01],
[ 1.5148e-01, 9.3240e-02, 1.9888e-01],
[ 2.4104e-01, 2.0141e-01, 2.8289e-01]]],
需要把它加载到对应的模型中
net = models.squeezenet1_1(pretrained=False)
pthfile = r'G:\Anaconda3\envs\pytorch\Lib\site-packages\torchvision\models\squeezenet1_1-f364aa15.pth'
net.load_state_dict(torch.load(pthfile))
print(net)
这样就有模型,有训练好的权重了。
SqueezeNet(
(features): Sequential(
(0): Conv2d(3, 64, kernel_size=(3, 3), stride=(2, 2))
(1): ReLU(inplace=True)
(2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)
(3): Fire(
(squeeze): Conv2d(64, 16, kernel_size=(1, 1),