pytorch加载预训练模型与自己模型不匹配如何解决
导读:本文共2084字符,通常情况下阅读需要7分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 两个有序字典找不同模型的参数和pth文件的参数都是有序字典(OrderedDict),把字典中的键转为列表就可以在for循环里迭代找不同了。model=ResNet18(1)model_dict1=torch.load('resnet18.pth')model_dict2=model.state_dict()model_list1=list... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。模型的参数和pth文件的参数都是有序字典(OrderedDict),把字典中的键转为列表就可以在for循环里迭代找不同了。
搭网络时要对照pth文件的字典顺序搭,字典顺序、权重尺寸(shape)和变量命名必须与pth文件完全一致。如果仅仅是变量命名不同,可采用类似的方法对模型的权重重新赋值。
完整的代码见自己搭建resnet18网络并加载torchvision自带权重
如果因为模型不匹配,运行第14行语句后,可看自己情况手动对m或n加上1。
补充:pytorch的一些坑:用预训练的vgg模型的部分层的特征报错,如张量不匹配
原因是因为卷积层的输出不能直接连接全连接层,即使输出的张量的总的大小是一致的
补上就好了!
本文:
pytorch加载预训练模型与自己模型不匹配如何解决的详细内容,希望对您有所帮助,信息来源于网络。