一块生姜 2024-03-25 11:29 采纳率: 0%
浏览 126
已结题

torchvision中的预训练模型VGG16加载报错,关于pretrained和weights参数

运行环境:
win系统,cuda11.8,python=3.10,pytorch=2.0.1,torchvision=0.15.2
运行代码:
python render.py -m output/gs_init/kitchen --sparse_view_num 4 --sh_degree 2 --init_pcd_name visual_hull_4 --white_background --skip_all --skip_train
报错界面:

img

网上的解决思路:从 torchvision 0.13开始,torchvision提供一个全新的多权重支持API (Multi-weight support API) ,支持将不同版本的权重参数文件加载到模型中。因此,加载预训练模型函数的参数从 pretrained = True 改为 weights=预训练模型参数版本 ,且旧版本的写法将在未来的torchvision 0.15版本中被Deprecated 。
我找到我这边加载函数,按照提示进行修改还是报错,是修改的位置错误,还是其他问题?

img

img

以上红色方框内,第二行注释的是原代码,第一行是修改后的代码

  • 写回答

7条回答 默认 最新

  • 关注

    上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    根据你提供的报错信息,是因为torchvision从0.13版本开始,对加载预训练模型的方式进行了更改,使用了新的Multi-weight支持API。因此,需要修改加载预训练模型的函数参数。

    根据你提供的代码,可以看到预训练模型的加载部分是在PerceptualLoss类中的__init__函数中。你可以进行以下修改:

    1. 将旧的pretrained参数修改为weights参数。
    2. 将VGG16_Weights.IMAGENET1K_V1作为weights参数的值。

    修改后的代码如下:

    class PerceptualLoss(nn.Module):
        def __init__(self, use_dropout=True):
            super().__init__()
            self.scaling_layer = ScalingLayer()
            self.chns = [64, 128, 256, 512, 512]
            self.net = vgg16(weights=VGG16_Weights.IMAGENET1K_V1, requires_grad=False)
            self.Lin0 = NetLinLayer(self.chns[0], use_dropout=use_dropout)
            self.Lin1 = NetLinLayer(self.chns[1], use_dropout=use_dropout)
            self.Lin2 = NetLinLayer(self.chns[2], use_dropout=use_dropout)
            self.Lin3 = NetLinLayer(self.chns[3], use_dropout=use_dropout)
            self.Lin4 = NetLinLayer(self.chns[4], use_dropout=use_dropout)
            self.Load_from_pretrained()
            for param in self.parameters():
                param.requires_grad = False
    

    解决方案:

    1. 将旧的pretrained参数修改为weights参数。
    2. 将VGG16_Weights.IMAGENET1K_V1作为weights参数的值。

    注意:请确保VGG16权重参数文件存在,并正确设置了权重文件的路径。如果仍然报错,请检查所使用的权重参数版本是否正确。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月25日
  • 创建了问题 3月25日

悬赏问题

  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络