深度学习:UserWarning: The parameter ‘pretrained‘ is deprecated since 0.13..解决办法

深度学习:UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead. 解决办法

1 报错警告:

pytorch版本:0.14.1

在利用pytorch中的预训练模型时,如resnet18

复制代码
import torchvision.models as models
pretrained_model = models.resnet18(pretrained=True)

会提示警告:

复制代码
UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.
  f"The parameter '{pretrained_param}' is deprecated since 0.13 and may be removed in the future, "

看出给出的原因是在0.13版本后,开始使用weights参数。

2 处理方法:

接下来为处理这个问题的方法,不同的预训练模型方法适用 以model.resnet18()为例

  • 首先点击models.resnet18()函数,进入函数内部,可以看到如下内容

    复制代码
    @handle_legacy_interface(weights=("pretrained", ResNet18_Weights.IMAGENET1K_V1))

    def resnet18(*, weights: Optional[ResNet18_Weights] = None, progress: bool = True, **kwargs: Any) -> ResNet:
    """ResNet-18 from Deep Residual Learning for Image Recognition <https://arxiv.org/pdf/1512.03385.pdf>__.

    复制代码
      Args:
          weights (:class:`~torchvision.models.ResNet18_Weights`, optional): The
              pretrained weights to use. See
              :class:`~torchvision.models.ResNet18_Weights` below for
              more details, and possible values. By default, no pre-trained
              weights are used.
          progress (bool, optional): If True, displays a progress bar of the
              download to stderr. Default is True.
          **kwargs: parameters passed to the ``torchvision.models.resnet.ResNet``
              base class. Please refer to the `source code
              <https://github.com/pytorch/vision/blob/main/torchvision/models/resnet.py>`_
              for more details about this class.
    
      .. autoclass:: torchvision.models.ResNet18_Weights
          :members:
      """
      weights = ResNet18_Weights.verify(weights)
    
      return _resnet(BasicBlock, [2, 2, 2, 2], weights, progress, **kwargs)
  • 首先看到第一行weights=("pretrained", ResNet18_Weights.IMAGENET1K_V1),所以这个还是可以用的,相当于利用了ResNet18_Weights.IMAGENET1K_V1参数。然后看第二行的这个weights函数接受的ResNet18_Weights,再次进入内部,可以看到如下:

    class ResNet18_Weights(WeightsEnum):
    IMAGENET1K_V1 = Weights(
    url="https://download.pytorch.org/models/resnet18-f37072fd.pth",
    transforms=partial(ImageClassification, crop_size=224),
    meta={
    **_COMMON_META,
    "num_params": 11689512,
    "recipe": "https://github.com/pytorch/vision/tree/main/references/classification#resnet",
    "_metrics": {
    "ImageNet-1K": {
    "acc@1": 69.758,
    "acc@5": 89.078,
    }
    },
    "_docs": """These weights reproduce closely the results of the paper using a simple training recipe.""",
    },
    )
    DEFAULT = IMAGENET1K_V1

这个是选择的参数,其他的预训练模型可以有多个版本,如下面ResNet50_Weights, 可以根据自己需求选择需要的。

  • 上面的函数已经给出了调用方法Args: weights (:class:~torchvision.models.ResNet18_Weights, optional)
    所以直接

    pretrained_model = models.resnet18(models.ResNet18_Weights.IMAGENET1K_V1)

也可以

复制代码
pretrained_model = models.resnet18(models.ResNet18_Weights.DEFAULT)

这两个是一样的。

3.总结

在版本更新之后可能会有些变化,有些函数调用方式的变化可以直接通过函数内部查看然后修改,重点是修改思路解决相同类似的问题。

相关推荐
玩转单片机与嵌入式3 分钟前
深入浅出TinyML 21:INT8量化改变了模型中的哪些数据?
stm32·深度学习·tinyml
2601_9622035110 分钟前
【SpringBoot3】面向切面 AspectJ AOP 使用详解
开发语言·前端·python
TechEdu20260611 分钟前
[人工智能]Gemini(Google DeepMind):多模态模型、智能体与工程实践
人工智能·ai
程序员大雄学编程12 分钟前
微积分43. 无穷积分入门:从概念到Python实战可视化
开发语言·python·学习·微积分
java1234_小锋13 分钟前
YOLO26 计算机视觉 - 训练自己的 YOLO26 模型
人工智能·yolo·机器学习·计算机视觉·yolo26
小程序设计17 分钟前
机械设计之大蒜茎叶粉碎抛送装置设计
人工智能·数据挖掘
测试老哥18 分钟前
Postman获取token并设置token依赖步骤
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
郝学胜-神的一滴21 分钟前
C++11 工程级应用 06:自己造一个类似Python的Range迭代器
开发语言·c++·windows·python·程序人生·microsoft
满怀冰雪23 分钟前
23-PaddleClas 数据集、配置文件与训练参数详解
人工智能·python·深度学习·paddlepaddle
Akir.weiwen23 分钟前
③ 约束显化:把隐含的语义假设变成显式规则
人工智能·编译·设计规范·语义