在pytorch加载预训练模型时,可能遇到以下几种情况。

分为以下几种

  • 在pytorch加载预训练模型时,可能遇到以下几种情况。
    • 1.多卡训练模型加载单卡预训练模型
    • 2. 多卡训练模型加载多卡预训练模型
    • 3. 单卡训练模型加载单卡预训练模型
    • 4. 单卡训练模型加载多卡预训练模型
    • 5.直接删除预训练模型中不匹配的键
    • 6. 新版torch的模型加载torch<0.4 版本模型
    • 7.在加载的参数模型中增加缺失的键,然后赋予随机参数

问题分为几种情况:

1.多卡训练模型加载单卡预训练模型

if isinstance(self.netG, torch.nn.DataParallel):self.netG = self.netG.module
self.netG.load_state_dict(torch.load(path))


这是多卡训练的模型加载单卡训练的模型出现的问题。

2. 多卡训练模型加载多卡预训练模型

self.netG.load_state_dict(torch.load(path))

3. 单卡训练模型加载单卡预训练模型

self.netG.load_state_dict(torch.load(path))

4. 单卡训练模型加载多卡预训练模型

对预训练模型创建新的字典,去掉key值前面的’module.’

state_dict = torch.load('checkpoint.pt’)
from collections import OrderedDict
new_state_dict = OrderedDict()
for k,v in state_dict.items():name = k[7:]new_state_dict[name]  =v
self.netG.load_state_dict(new_state_dict)

5.直接删除预训练模型中不匹配的键

 model = DPN(num_init_features=64, k_R=96, G=32, k_sec=(3,4,20,3), inc_sec=(16,32,24,128), num_classes=1,decoder=args.decoder)http = {'url': 'http://data.lip6.fr/cadene/pretrainedmodels/dpn92_extra-b040e4a9b.pth'}pretrained_dict=model_zoo.load_url(http['url'])model_dict = model.state_dict()pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}#filter out unnecessary keys model_dict.update(pretrained_dict)model.load_state_dict(model_dict)model = torch.nn.DataParallel(model).cuda()

6. 新版torch的模型加载torch<0.4 版本模型

baol

7.在加载的参数模型中增加缺失的键,然后赋予随机参数

在state_dict 参数模型中增加开头是conv1一些键

state_dict = torch.load(path, map_location=self.device)
model_dict = self.netG_A.state_dict()for k,v in model_dict.items():if k.startswith('conv11') or k.startswith('conv21') or k.startswith('conv31'):state_dict[k] = vself.netG_A.load_state_dict(state_dict)

pytorch:加载预训练模型(多卡加载单卡预训练模型,多GPU,单GPU)相关推荐

  1. Pytorch加载torchvision从本地下载好的预训练模型的简单解决方案

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.喜 ...

  2. 用pytorch加载训练模型

    用pytorch加载.pth格式的训练模型 在pytorch/vision/models网页上有很多现成的经典网络模型可以调用,其中包括alexnet.vgg.googlenet.resnet.inc ...

  3. PyTorch 加载预训练权重

    前言  使用PyTorch官方提供的权重或者其他第三方提供的权重对相同模型的参数进行初始化,在数据量较少的前提下,可以帮助模型更快地收敛到最优点,达到更好的效果,即迁移学习.  在大部分的迁移学习场景 ...

  4. 解决多卡加载预训练模型时,卡0总会比其他卡多占用显存,多卡占用显存不均

    出现问题: 再跑stdc官方给出代码时,使用多卡加载pretrained模型时,卡0上比卡123多三个进程,卡123都只有一个进程,中断训练后卡0全部进程都中断.即卡0在正常训练时比卡123多占用显存 ...

  5. Pytorch加载模型只导入部分层权重,即跳过指定网络层的方法

    需求 Pytorch加载模型时,只导入部分层权重,跳过部分指定网络层.(权重文件存储为dict形式) 方法一 常见方法:加载权重时用if对网络层进行筛选 ''' # model为定义的网络结构: cl ...

  6. Pytorch加载数据集的方式总结

    Pytorch加载数据集的方式总结 一.自己重写定义(Dataset.DataLoader) 二.用Pytorch自带的类(ImageFolder.datasets.DataLoader) 2.1 加 ...

  7. pytorch 驱动不兼容_解决Pytorch 加载训练好的模型 遇到的error问题

    这是一个非常愚蠢的错误 debug的时候要好好看error信息 提醒自己切记好好对待error!切记!切记! -----------------------分割线---------------- py ...

  8. Pytorch 加载和保存模型

    目录 保存和加载模型 1.  什么是状态字典:state_dict? 2.保存和加载推理模型 2.1 保存/加载 state_dict (推荐使用) 2.2 保存/加载完整模型 3. 保存和加载 Ch ...

  9. 不加载执行js_前端性能优化:preload 预加载页面资源

    网上看到一篇来自蚂蚁金服数据体验团队的文章,觉得不错,分享给大伙:https://juejin.im/post/5a7fb09bf265da4e8e785c38 本文主要介绍preload的使用,以及 ...

最新文章

  1. 哈佛揪出「熬夜猝死」元凶:问题不在大脑在肠道 | Cell
  2. .NET学习之Foreach……
  3. SDUTOJ3771_数组计算机(线段树)
  4. 开放下载!《DTS控制台入门一本通》
  5. 内存管理(ybtoj-二叉堆)
  6. java中u怎么用_Java中interrupt的使用
  7. 第 132 章 Example
  8. python正则匹配字符串中的数字_Python正则表达式匹配字符串中的数字
  9. CreateRemoteThread函数
  10. CentOS 5.8 Zimbra邮件系统安装与配置
  11. webrtc java api_java – 使用WebSockets实现WebRTC信令
  12. 菜单关联注册/注销 dll/ocx 文件
  13. 矩阵微分(matrix derivatives)
  14. 一个gSOAP web服务可以用多线程技术来处理请求
  15. npm 更新_npm 的安全困扰:仅有 9.27% 的 npm 开发者使用 2FA
  16. WeChat-JSAPI支付
  17. cad 选择框不是矩形 解决方法
  18. 参会记录|全国多媒体取证暨第二届多媒体智能安全学术研讨会(MAS‘2023)
  19. 退出手机QQ依然显示在线
  20. FT232RL为接口转换芯片

热门文章

  1. 万用表怎么测电池内阻_数字万用表和指针万用表,两者怎么选?
  2. 一个form 如何做两次提交_如何做一个优秀的家长
  3. 全国信息联赛c语言,信息学竞赛之编程规则
  4. 5求的值c语言编辑,C语言中怎样求1+3+5~~~~~+9值并 – 手机爱问
  5. python怎么读写_python怎么读写文件
  6. C语言 函数不定长参数 - C语言零基础入门教程
  7. java写入数组_如何在Java中将数组写入outputStream
  8. java jdom 设置第1行_Java通过jdom操作生成XML文件的实例代码下载
  9. server精简版代理意外终止 sql_来自阿里巴巴内部JAVA面试宝典意外流出
  10. Linux中fdisk对应的c函数,linux下fdisk命令实战案例之详解