Pytorch有很多方便易用的包,今天要谈的是torchvision包,它包括3个子包,分别是: torchvison.datasets ,torchvision.models ,torchvision.transforms ,分别是预定义好的数据集(比如MNIST、CIFAR10等)、预定义好的经典网络结构(比如AlexNet、VGG、ResNet等)和预定义好的数据增强方法(比如Resize、ToTensor等)。这些方法可以直接调用,简化我们建模的过程,也可以作为我们学习或构建新的模型的参考。

本文,我们讲述的是models,且只谈模型的加载。models这个包中包含alexnet、densenet、inception、resnet、squeezenet、vgg等常用的网络结构,并且提供了预训练模型,可以通过简单调用来读取网络结构和预训练模型。

模型地址:https://github.com/pytorch/vision/tree/master/torchvision/models

官方文档:https://pytorch.org/docs/master/torchvision/models.html

我将加载的方法简单总结为以下四种:

1.直接加载预训练模型

1 importtorchvision.models as models2

3 resnet50 = models.resnet50(pretrained=True)

这样就导入了resnet50的预训练模型了。

如果只需要网络结构,不需要用预训练模型的参数来初始化,那么就是:

model =torchvision.models.resnet50(pretrained=False)

或者把resnet复制到自己的目录下,新建个model文件夹

可以参考下面的猫狗大战入门算法入门

https://github.com/JackwithWilshere/Kaggle-Dogs_vs_Cats_PyTorch

2.修改某一层

以resnet为例,默认的是ImageNet的1000类,比如我们要做二分类,分类猫和狗

1 resnet.fc = nn.Linear(2048, 2) #resnet 第一层卷积的卷积核是7,我们可能想改成5,那么可以通过以下方法修改:

2

3 #未经试验,修改需要有理论依据,计算featuremap维度使之匹配。

4 resnet.conv1 = nn.Conv2d(3, 64,kernel_size=5, stride=2, padding=3, bias=False)

3.加载部分预训练模型

对于具体的任务,很难保证模型和公开的模型完全一样,但是预训练模型的参数确实有助于提高训练的准确率,为了结合二者的优点,就需要我们加载部分预训练模型。

1 #加载model,model是自己定义好的模型

resnet50 = models.resnet50(pretrained=True)

pretrained_dict =resnet50.state_dict()

model =Net(...)4 5 #读取参数 6 model_dict =model.state_dict()

9 #将pretrained_dict里不属于model_dict的键剔除掉

10 pretrained_dict = {k: v for k, v in pretrained_dict.items() if k inmodel_dict} #更新现有的model_dict 13 model_dict.update(pretrained_dict) #这一块更新的什么?? #加载我们真正需要的state_dict 16 model.load_state_dict(model_dict)

4. 加载自己的模型

其实这个是保存和恢复模型,比如我们训练好的模型保存,然后加载用于测试。

方法一(推荐):

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

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

(1)保存

1 torch.save(model.state_dict(), PATH)2

3 #example

4 torch.save(resnet50.state_dict(),'ckp/model.pth')

(2)恢复

1 model = ModelClass(*args, **kwargs)2 model.load_state_dict(torch.load(PATH))3

4 #example

5 resnet=resnet50(pretrained=True)6 resnet.load_state_dict(torch.load('ckp/model.pth'))

方法二:

使用这种方法,将会同时保存模型的参数和结构信息到模型文件中。

(1)保存

torch.save (the_model, PATH)

(2)恢复

torch.load (the_model, PATH)

pytorch模型加载测试_pytorch模型加载方法汇总相关推荐

  1. ardl模型stata命令_18种Eviews方程参数估计方法汇总​

    原标题:18种Eviews方程参数估计方法汇总​ 目录 1.LS最小二乘法,可以用于线性回归模型.ARMA等模型 2.TSLS两阶段最小二乘法 3.GMM 广义矩估计方法 4.ARCH 自回归条件异方 ...

  2. 【Keras速成】Keras图像分类从模型自定义到测试

    文章首发于微信公众号<与有三学AI> [Keras速成]Keras图像分类从模型自定义到测试 这是给大家准备的Keras速成例子 这一次我们讲讲keras这个简单.流行的深度学习框架,一个 ...

  3. HiAGM模型源码测试【原始数据集+中文数据集】

    论文链接:Hierarchy-Aware Global Model for Hierarchical Text Classification github代码链接:HiAGM HiAGM模型源码测试 ...

  4. 保存模型后无法训练_模型构建到部署实践

    导读 在工业界一般会采用了tensorflow-serving进行模型的部署,而在模型构建时会因人而异会使用不同的深度学习框架,这就需要在使用指定深度学习框架训练出模型后,统一将模型转为pb格式,便于 ...

  5. pytorch模型加载测试_使用Pytorch实现物体检测(Faster R-CNN)

    在本示例中,介绍一种two-stage算法(Faster R-CNN),将目标区域检测和类别识别分为两个任务进行物体检测.本示例采用PyTorch引擎进行模型构建. 如果您已熟练使用Notebook和 ...

  6. [Pytorch系列-41]:卷积神经网络 - 模型参数的恢复/加载 - 搭建LeNet-5网络与MNIST数据集手写数字识别

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  7. 加载dict_PyTorch 7.保存和加载pytorch模型的两种方法

    众所周知,python的对象都可以通过torch.save和torch.load函数进行保存和加载(不知道?那你现在知道了(*^_^*)),比如: x1 = {"d":" ...

  8. Pytorch 加载和保存模型

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

  9. PyTorch模型训练完毕后静态量化、保存、加载int8量化模型

    1. PyTorch模型量化方法 Pytorch模型量化方法介绍有很多可以参考的,这里推荐两篇文章写的很详细可以给大家一个大致的参考Pytorch的量化,官方量化文档 Pytorch的量化大致分为三种 ...

最新文章

  1. 深度学习的Xavier初始化方法
  2. avoid error when import AssemblyKeyFile
  3. hdu1501 记忆化搜索
  4. leetcode 504. 七进制数(Java版)
  5. HTML css嵌套的一个例子
  6. 安卓系统双屏异显_Android 双屏异显实现的三种方式
  7. print2flashwindows7旗舰版下载哪一个_JUJUMAO_MSDN原版 win 7 二合一 旗舰版32位 64位原版ISO镜像...
  8. 自定义组件--创建mxml组件
  9. python中 yield 的用法详解——最简单,最清晰的解释(排序节省内存消耗)
  10. tar (child): bzip2: Cannot exec: No such file or directory
  11. C盘空间越来越小怎么办,教你27招
  12. matlab仿真实验过程,化工自动化实验及MATLAB仿真教程
  13. python加载dll文件_python引用DLL文件的方法
  14. C++ 野指针和悬空指针
  15. HAUT OJ 1504: CXK的篮球数(加强版)--差分法
  16. 经典Ubuntu20.04版本U盘安装双系统教程
  17. 群晖nas介绍文档_我的NAS我的地盘 篇三:群晖NAS软件介绍与应用之DS file篇
  18. Debian下安装Mosquitto
  19. 使用bootstrap时下拉菜单失效问题解决
  20. 一本通 1287:最低通行费 C++

热门文章

  1. hadoop 重新格式化 NameNode
  2. 情感数据对LSTM股票预测模型的影响研究
  3. Leetcode--字符串压缩
  4. html控制图的宽,用JointJS做一个简单的功能控制图
  5. 登录mysql一闪而过_解决MySQL 一闪而过的情况
  6. python中scale_Python中的Log-scale mathplotlib?
  7. visual studio 调试 定义debug常量_有趣的阅读 12个提高生产力的Visual Studio调试技巧...
  8. python自动化运维书籍推荐_《Python 自动化运维:技术与最佳实践》
  9. 2016专接本c语言真题_云南特岗教师考试真题(中学信息技术)9套(无答案)
  10. 更改Ubuntu终端复制和粘贴的快捷键