本节课主要对于大白AI课程https://mp.weixin.qq.com/s/STbdSoI7xLeHrNyLlw9GOg
《Pytorch模型推理及范式》课程中第二节课进行学习
2 作业解答 必做题-
从torchvision中加载resnet18模型结构,并载入预训练好的模型权重 ‘resnet18-5c106cde.pth’ (在物料包的weights文件夹中)。
import torchvision resnet18 = torchvision.models.resnet18() pretrained_state_dict = torch.load("D:CodespacePythonmodel_analysislesson2weights\resnet18-5c106cde.pth") resnet18.load_state_dict(pretrained_state_dict, strict=True) -
将(1)中加载好权重的resnet18模型,保存成onnx文件。
onnx文件大小44.5 MB -
以torch.rand([1,3,224,224]).type(torch.float32)作为输入,求resnet18的模型计算量和参数量。
Model: 1.82 GFLOPs and 11.69M parameters
-
以torch.rand([1,3,448,448]).type(torch.float32)作为输入,求resnet18的模型计算量和参数量。
Model: 7.27 GFLOPs and 11.69M parameter
-
比较必做题中的(3)和(4)的结果,有什么规律?
参数量相同,因为输入输入并不影响模型本来的参数数量
计算量(3)是(4)的四分之一,因为后者输入像素值是前者的四倍
-
尝试用netron可视化resnet18的onnx文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6X9Uwd1E-1634280547384)(C:Users1AppDataRoamingTyporatypora-user-imagesimage-20211015141953357.png)]
-
model作为torch.nn.Module的子类,除了用 model.state_dict()查看网络层外,还可以用model.named_parameters()和model.parameters()。它们三儿有啥不同?
parameters仅返回模型参数但named_parameters除参数外还会返回每层的名字,model_state_dict会以字典的形式返回整个网络j结构。
-
加载模型权重时用的model.load_state_dict(字典, strict=True),里面的strict参数什么情况下要赋值False?
当导入的模型参数量与调用该函数的模型参数量不匹配时,也能使其运行,如果strict为True,则必须保证二者模型结构一致



