深度学习: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 分钟前
(鱼书)深度学习入门1:python入门
人工智能·python·深度学习
Shuai@6 分钟前
VILA-M3: Enhancing Vision-Language Models with Medical Expert Knowledge
人工智能·语言模型·自然语言处理
动亦定8 分钟前
AI与物联网(IoT)的融合
人工智能·物联网
夏末蝉未鸣0121 分钟前
python transformers笔记(TrainingArguments类)
python·自然语言处理·transformer
德育处主任Pro25 分钟前
「py数据分析」04如何将 Python 爬取的数据保存为 CSV 文件
数据库·python·数据分析
咸鱼鲸35 分钟前
【PyTorch】PyTorch中数据准备工作(AI生成)
人工智能·pytorch·python
停走的风40 分钟前
二刷(李宏毅深度学习,醍醐灌顶,长刷长爽)
人工智能·深度学习
qinyia1 小时前
Wisdom SSH:探索AI助手在复杂运维任务中的卓越表现
运维·人工智能·ssh
TY-20251 小时前
二、深度学习——损失函数
人工智能·深度学习
Python×CATIA工业智造1 小时前
列表页与详情页的智能识别:多维度判定方法与工业级实现
爬虫·深度学习·pycharm