【PyTorch教程】04-详解torchvision 0.13中的预训练模型加载的更新及报错的解决方法 (2022年最新)

; 加载预训练模型(有重大更新)

相信最近 (2022年7月) 安装或者更新了 PyTorch 和 torchvision 的同志们可能跑代码时遇到了下面的报错之一:

  • UserWarning: The parameter ‘pretrained’ is deprecated since 0.13 and will be removed in 0.15, please use ‘weights’ instead.

  • UserWarning: Arguments other than a weight enum or None for ‘weights’ are deprecated since 0.13 and will be removed in 0.15. The current behavior is equivalent to passing weights=ResNet50_Weights.IMAGENET1K_V1. You can also use weights=ResNet50_Weights.DEFAULT to get the most up-to-date weights.

  • Expected type ‘Optional[ResNet50_Weights]’, got ‘str’ instead

这是因为 torchvision 0.13对预训练模型加载方式作出了重大更新造成的。今天一次性就可以把上面3条Bug全部消灭。

从 torchvision 0.13开始,torchvision提供一个全新的 多权重支持API (Multi-weight support API) ,支持将不同版本的权重参数文件加载到模型中。

1. 新老版本写法对比

从 torchvision 0.13开始,加载预训练模型函数的参数从 pretrained = True 改为 weights=预训练模型参数版本 。且旧版本的写法将在未来的torchvision 0.15版本中被Deprecated 。

举个例子:

from torchvision import models

model_old = models.resnet50(pretrained=True)
model_old = models.resnet50(True)

model_new = models.resnet50(weights=models.ResNet50_Weights.IMAGENET1K_V1)

model = models.resnet50(weights=None)
model = models.resnet50()

其中,第8行代码的 IMAGENET1K_V1 表示的是 ResNet-50 在 ImageNet 数据集上进行预训练的第一个版本的权重参数文件。是一个版本标识符。

2. 新写法的好处

在旧版本的写法 pretrained = True 中,对于预训练权重参数我们没有太多选择的余地,一执行起来就要使用默认的预训练权重文件版本。但问题是,现在深度学习的发展日新月异,很快就有性能更强的模型横空出世。

而使用新版本写法 weights=预训练模型参数版本 ,相当于我们掌握了预训练权重参数文件的选择权。我们就可以尽情地使用更准更快更强更新的预训练权重参数文件,帮助我们的研究更上一层楼。

举个例子:

from torchvision import models

model_v1 = models.resnet50(weights=models.ResNet50_Weights.IMAGENET1K_V1)

model_v1 = models.resnet50(weights="IMAGENET1K_V1")

model_v2 = models.resnet50(weights=models.ResNet50_Weights.IMAGENET1K_V2)

model_v1 = models.resnet50(weights="IMAGENET1K_V2")

如果你不知道哪个权重文件的版本是最新的,没关系,直接选择默认DEFAULT即可。官方会随着 torchvision 的升级而让 DEFAULT 权重文件版本保持在最新。如下代码所示:

from torchvision import models

model_new = models.resnet50(weights=models.ResNet50_Weights.DEFAULT)

Original: https://blog.csdn.net/Sihang_Xie/article/details/125646287
Author: 自牧君
Title: 【PyTorch教程】04-详解torchvision 0.13中的预训练模型加载的更新及报错的解决方法 (2022年最新)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10525/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部
最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总