# save
torch.save(model.state_dict(), PATH)# load
model = MyModel(*args, **kwargs)
model.load_state_dict(torch.load(PATH))
model.eval()

model.state_dict()其实返回的是一个OrderDict,存储了网络结构的名字和对应的参数。

在模型完成训练后,我们需要将训练好的模型保存为一个文件供测试使用,或者因为一些原因我们需要继续之前的状态训练之前保存的模型,那么如何在PyTorch中保存和恢复模型呢?

参考PyTorch官方的这份repo,我们知道有两种方法可以实现我们想要的效果。

方法一(推荐):

第一种方法也是官方推荐的方法,只保存和恢复模型中的参数。

保存

1

torch.save(the_model.state_dict(), PATH)

恢复

1

2

the_model = TheModelClass(*args, **kwargs)

the_model.load_state_dict(torch.load(PATH))

使用这种方法,我们需要自己导入模型的结构信息。

方法二:

使用这种方法,将会保存模型的参数和结构信息。

保存

1

torch.save(the_model, PATH)

恢复

1

the_model = torch.load(PATH)

一个相对完整的例子

saving

torch.save({'epoch': epoch + 1,'arch': args.arch,'state_dict': model.state_dict(),'best_prec1': best_prec1,}, 'checkpoint.tar' )

loading

if args.resume:if os.path.isfile(args.resume):print("=> loading checkpoint '{}'".format(args.resume))checkpoint = torch.load(args.resume)args.start_epoch = checkpoint['epoch']best_prec1 = checkpoint['best_prec1']model.load_state_dict(checkpoint['state_dict'])print("=> loaded checkpoint '{}' (epoch {})" .format(args.evaluate, checkpoint['epoch']))

获取模型中某些层的参数

对于恢复的模型,如果我们想查看某些层的参数,可以:

# 定义一个网络
from collections import OrderedDict
model = nn.Sequential(OrderedDict([('conv1', nn.Conv2d(1,20,5)),('relu1', nn.ReLU()),('conv2', nn.Conv2d(20,64,5)),('relu2', nn.ReLU())]))
# 打印网络的结构
print(model)

Out:

Sequential ((conv1): Conv2d(1, 20, kernel_size=(5, 5), stride=(1, 1))(relu1): ReLU ()(conv2): Conv2d(20, 64, kernel_size=(5, 5), stride=(1, 1))(relu2): ReLU ()
)

如果我们想获取conv1的weight和bias:

params=model.state_dict()
for k,v in params.items():print(k)    #打印网络中的变量名
print(params['conv1.weight'])   #打印conv1的weight
print(params['conv1.bias'])   #打印conv1的bias  

PyTorch 学习笔记(五):存储和恢复模型并查看参数-PyTorch 中文网

源码详解Pytorch的state_dict和load_state_dict - 知乎

PyTorch:存储和恢复模型并查看参数,load_state_dict(),state_dict()相关推荐

  1. JVM内存模型、相关参数设置与命令查看

    JVM内存模型.相关参数设置与命令查看 JVM内存模型,你看这一篇就够了 - 知乎 (zhihu.com) Java虚拟机-Java8内存模型JVM(整理版) - 牧梦者 - 博客园 (cnblogs ...

  2. Tensorflow:如何保存/恢复模型?

    在Tensorflow中训练模型后: 您如何保存经过训练的模型? 您以后如何还原此保存的模型? #1楼 对于TensorFlow版本<0.11.0RC1: 保存的检查点包含模型中Variable ...

  3. [深度学习] Pytorch中RNN/LSTM 模型小结

    目录 一 Liner 二 RNN 三 LSTM 四 LSTM 代码例子 概念介绍可以参考:[深度学习]理解RNN, GRU, LSTM 网络 Pytorch中所有模型分为构造参数和输入和输出构造参数两 ...

  4. PyTorch | 保存和加载模型教程

    点击上方"算法猿的成长",选择"加为星标" 第一时间关注 AI 和 Python 知识 图片来自 Unsplash,作者: Jenny Caywood 2019 ...

  5. aws rds监控慢sql_AWS RDS SQL Server恢复模型,备份和还原

    aws rds监控慢sql This article will review about the recovery models backups and restore options in avai ...

  6. TensorFlow2 -官方教程 :保存和恢复模型

    文章目录 准备工作:安装,导入,获取数据集,定义model 在训练期间保存模型(以 checkpoints 形式保存) Checkpoint 回调用法 checkpoint 回调选项 这些文件是什么? ...

  7. 电商推荐系统(上):推荐系统架构、数据模型、离线统计与机器学习推荐、历史热门商品、最近热门商品、商品平均得分统计推荐、基于隐语义模型的协同过滤推荐、用户商品推荐列表、商品相似度矩阵、模型评估和参数选取

    文章目录 第1章 项目体系架构设计 1.1 项目系统架构 1.2 项目数据流程 1.3 数据模型 第2章 工具环境搭建 2.1 MongoDB(单节点)环境配置 2.2 Redis(单节点)环境配置 ...

  8. 模型大小 与参数量计算

    1.model size 就是模型的大小,我们一般使用参数量parameter来衡量,注意,它的单位是个.但是由于很多模型参数量太大,所以一般取一个更方便的单位:兆(M) 来衡量.比如ResNet-1 ...

  9. 格式化zookeeper命令_zookeeper原理篇Zookeeper的数据存储与恢复原理

    前言 经过前面的一些文章的学习和了解,我们对Zookeeper有了一定的理解. 前文直达链接: zookeeper原理篇-Zookeeper选举过程分析 zookeeper原理篇-Zookeeper会 ...

最新文章

  1. curl 安装_记一次因curl版本过低导致zabbix server不停重启问题及解决方法
  2. python面向对象之方法
  3. java,阳历转阴历
  4. 区块链 选择交易所 五个注意点
  5. 有kotlin中的Android项目编译出现 Unresolved reference: R
  6. STL:set/multiset用法详解
  7. HDU 4920 Matrix multiplication(矩阵相乘)
  8. 宁夏公安打传销端窝点为春节保平安
  9. mongobd运行电脑不允许_U盘中的操作系统:Chrome OS,极致简洁超流畅,拯救你的旧电脑...
  10. Max 缩放代码 获取2点直接的距离
  11. 异常声音检测之kaldi DNN 训练
  12. 手把手教你搭建属于自己的服务器
  13. 宝藏又小众的覆盖物PBR多通道贴图素材网站分享
  14. 二手闲鱼源码 php 如何搭建
  15. ADAMS-Simulink联合仿真-零基础(一)
  16. 三次握手和四次挥手详解
  17. 万恶的NPE如何避免,几种你必须知道的方案!!!
  18. ioncube扩展的安装详细图文教程,适合所有新手
  19. sigmoid函数的用途
  20. formdata格式

热门文章

  1. Java 集合类说明及区别
  2. 又是绩效考核时,KPI 和 OKR 到底怎么考?
  3. 作业四 | 个人项目-小学四则运算 “软件”之初版
  4. Ansible 管理windwos服务器(一)
  5. 文件路径:/和\的区别
  6. Freezer - 备份云硬盘实现
  7. mySQL 教程 第2章 安装和介绍mySQL
  8. 图书馆如何应用视频直播?
  9. 安全筛选器创建与管理
  10. oracle的cols,Oraclecols_as_rows比对数据