xxx.pth或者xxx.pt is a zip archive(did you mean to use torch.jit.load()?问题解决

提示:推荐使用方法三,不会“科学上网”的请关注微信公众号“DGX杂学”并在后台私信!
错误:使用torch.load()加载模型参数时,提示“xxx.pt is a zip archive(did you mean to use torch.jit.load()?)“或者“xxx.pth is a zip archive(did you mean to use torch.jit.load()?)“

错误原因:

xxx.pth或者xxx.pt来自pytorch1.6或更高的版本。1.6之后pytorch默认使用zip文件格式来保存权重文件,导致这些权重文件无法直接被1.5及以下的pytorch加载。

解决方式:

方法一:升级pytorch版本

直接把自己的pytorch升级到pytorch1.6或者更高的版本。

方法二:用别人的电脑把权重文件改成非zip格式

如果自己不想升级或者自己电脑不支持pytorch更高版本,可以找身边pytorch高于1.6的人帮忙把权重文件改为非zip格式,改好后替换掉原来的权重文件问题就解决了。
代码:

import torch
state_dict = torch.load("xxx.pth")#xxx.pth或者xxx.pt就是你想改掉的权重文件
torch.save(state_dict, "xxx.pth", _use_new_zipfile_serialization=False)

方法三:用Google colab 把权重文件改为非zip格式(作者所用,推荐)

对于电脑不支持或者不想升级更高版本的人和借不到电脑的人(作者就是),怎么办呢?
答案:使用Google colab要科学上网才可以用) 这个免费的平台来把权重文件改为非zip格式。colab本身就装有高版本的pytorch和cuda,所以我们主要把权重文件上传上去并运行方法二中的代码就是ok了,转换完后下载就行。

import torch
state_dict = torch.load("xxx.pth")#xxx.pth或者xxx.pt就是你想改掉的权重文件
torch.save(state_dict, "xxx.pth", _use_new_zipfile_serialization=False)

使用colab改有两种方法:
方法一:直接上传权重文件(推荐!)

  • 打开colab后直接上传在这里插入图片描述
  • 选择权重文件
    在这里插入图片描述
  • 开始修改权重文件
    添加方法二中的代码(要改成自己的权重文件名)并运行
    在这里插入图片描述
  • 运行问题解决
    遇到以下问题不要慌,因为我们没有设置好这个笔记本
    在这里插入图片描述
  • 问题解决:点击“视图”》“笔记本信息”》“打开笔记本设置”》“选择GPU”》“保存”。
    然后重新运行代码。
  • 运行结束后刷新文件列表下载文件。
    在这里插入图片描述
    在这里插入图片描述
  • 把下载下来的权重文件替换掉原来的权重文件,就不会报错了。

方法二:同样是colab方法,权重文件先上传到谷歌云盘再在colab中引用
这种方法不细讲了直接上代码。

  • 装载谷歌云盘
from google.colab import drive
# 將自己的云端硬盘装载上去
drive.mount('/content/gdrive')

  • 使用%cd切换到权重文件路径
  • 运行转换代码(笔记本可以提前设置好GPU)
import torch
state_dict = torch.load("xxx.pth")#xxx.pth或者xxx.pt就是你想改掉的权重文件
torch.save(state_dict, "xxx.pth", _use_new_zipfile_serialization=False)
  • 文件下载与保存
    以上代码运行完后刷新文件列表,下载权重文件即可。如果你想保存这个修改好后的权重文件到你的谷歌云盘(即同步)。可以使用以下命令:
drive.flush_and_unmount()
  • 10
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值