当前位置: 首页 > news >正文

Pytorch: 解决因pytorch版本不同 导致训练ckpt加载失败

大家都会遇到在工程项目实施阶段,如果训练的模型文件在不同的torch版本环境下部署时,会报错~。
报错举例

# 查看torch环境
import torch
print(torch.__version__)# 训练时环境:torch 1.8.2+cu111
# 部署时环境:torch 1.4.0torch.load(checkpoint, map_location = 'cpu')
# 报错如下:
RuntimeError: version_ <= kMaxSupportedFileFormatVersion INTERNAL ASSERT FAILED at /pytorch/caffe2/serialize/inline_container.cc:132, please report a bug to PyTorch. 
Attempted to read a PyTorch file with version 3, but the maximum supported version for reading is 2. 
Your PyTorch installation may be too old. (init at /pytorch/caffe2/serialize/inline_container.cc:132)

报错的原因分析:
在torch1.6版本及其以后,torch.save函数使用了一种新的文件格式。torch.load任然保持着对旧版本的兼容,如果高版本环境下想要保存低版本兼容的模型文件格式,可以使用_use_new_zipfile_serialization=False参数设定。

The 1.6 release of PyTorch switched torch.save to use a new zipfile-based file format. 
torch.load still retains the ability to load files in the old format. 
If for any reason you want torch.save to use the old format, 
pass the kwarg _use_new_zipfile_serialization=False.

解决方案

import torch
state_dict = torch.load(checkpoint_old_file, map_location="cpu")
torch.save(state_dict, checkpoint_new_file, _use_new_zipfile_serialization=False)

转载自SSDesign的知乎文章
https://zhuanlan.zhihu.com/p/465807214

相关文章:

  • FPGA 纯逻辑arinc818 ip core
  • 力扣-2904最短且字典序最小的美丽子序列
  • 【机器学习300问】95、什么是KNN算法?它和K-means什么关系?
  • 网络协议——有状态协议和无状态协议
  • linux下删除nginx进程
  • 自主创新助力科技强军,麒麟信安闪耀第九届军博会
  • 轻松拿捏C语言——【字符串函数】的使用及模拟实现
  • python02 循环与容器
  • DSVPN综合实验
  • 【JAVA基础之网络编程】UDP和TCP协议以及三次握手和四次挥手的过程
  • 【游戏引擎】Unity脚本基础 开启游戏开发之旅
  • Linux完整版命令大全(九)
  • Leecode热题100---55:跳跃游戏(贪心算法)
  • C++的模板(七):左值强制类型转换
  • ​Java基础复习笔记 第16章:网络编程
  • 07.Android之多媒体问题
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • avalon2.2的VM生成过程
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • docker-consul
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Git的一些常用操作
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript设计模式系列一:工厂模式
  • java中具有继承关系的类及其对象初始化顺序
  • JDK 6和JDK 7中的substring()方法
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JSDuck 与 AngularJS 融合技巧
  • js对象的深浅拷贝
  • React组件设计模式(一)
  • Redis中的lru算法实现
  • Service Worker
  • vuex 学习笔记 01
  • 好的网址,关于.net 4.0 ,vs 2010
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 数组的操作
  • 思否第一天
  • FaaS 的简单实践
  • ​Linux·i2c驱动架构​
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #QT(串口助手-界面)
  • #QT项目实战(天气预报)
  • (1)无线电失控保护(二)
  • (bean配置类的注解开发)学习Spring的第十三天
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (不用互三)AI绘画工具应该如何选择
  • (二) 初入MySQL 【数据库管理】
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (算法设计与分析)第一章算法概述-习题
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (转载)Linux 多线程条件变量同步
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿