pytorch学习笔记(9)--神经网络模型的保存与读取
一、网络模型的保存和加载
1、网络模型保存方法1
import torch
import torchvision vgg16 = torchvision.models.vgg16(weights=False)
# 保存方法1:模型结构+模型参数
torch.save(vgg16, "vgg16_method1.pth")
运行上述代码会发现在其同路径下保存了神经网络模型文件:vgg16_model1.pth

加载代码:
import torch # 方法1 -> 保存方法1,加载模型
model = torch.load("vgg16_method1.pth")
print(model)
结果:
VGG(
(features): Sequential(
(0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU(inplace=True)
(2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ReLU(inplace=True)
(4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(6): ReLU(inplace=True)
(7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(8): ReLU(inplace=True)
(9): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(11): ReLU(inplace=True)
(12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(13): ReLU(inplace=True)
(14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(15): ReLU(inplace=True)
(16): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(18): ReLU(inplace=True)
(19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(20): ReLU(inplace=True)
(21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(22): ReLU(inplace=True)
(23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(25): ReLU(inplace=True)
(26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(27): ReLU(inplace=True)
(28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(29): ReLU(inplace=True)
(30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
)
(avgpool): AdaptiveAvgPool2d(output_size=(7, 7))
(classifier): Sequential(
(0): Linear(in_features=25088, out_features=4096, bias=True)
(1): ReLU(inplace=True)
(2): Dropout(p=0.5, inplace=False)
(3): Linear(in_features=4096, out_features=4096, bias=True)
(4): ReLU(inplace=True)
(5): Dropout(p=0.5, inplace=False)
(6): Linear(in_features=4096, out_features=1000, bias=True)
)
)
保存了网络模型及模型的参数:
注:没有预训练的模型不是没有参数,而是参数在初始化的状态
2、网络模型保存方法2
保存的是模型参数(官方推荐):
import torch
import torchvision vgg16 = torchvision.models.vgg16(weights=False)
torch.save(vgg16.state_dict(), "vgg16_method2.pth")
import torch
model = torch.load("vgg16_method2.pth")
print(model)
结果:
OrderedDict([('features.0.weight', tensor([[[[-9.0302e-02, 6.1546e-02, -1.7735e-02],
[ 1.1606e-01, -1.7557e-02, -5.4266e-02],
[-3.0833e-02, 2.3019e-02, 2.2968e-02]],
[[-3.5706e-02, -3.8619e-02, 2.7329e-02],
[ 1.0525e-02, 7.0172e-02, -4.3097e-02],
[-7.9473e-03, -2.8735e-02, -4.3932e-02]],
[[ 6.6814e-02, -6.1849e-02, -9.8496e-02],
[-5.7835e-02, 3.3374e-02, 3.2937e-02],
[-4.3170e-02, -3.1252e-02, 1.1314e-01]]],
[[[ 6.6068e-02, -6.5313e-02, -8.0335e-02],
[-1.5587e-02, 1.1784e-02, -8.8468e-03],
[ 7.2871e-02, 7.5150e-02, -7.2230e-02]],
[[-3.7871e-02, 1.8217e-02, 1.1531e-01],
[ 5.7616e-02, -1.2748e-01, 2.3816e-02],
[-4.1781e-02, -2.1523e-02, 6.2196e-02]],
[[-2.0698e-03, 8.8641e-02, 3.1991e-02],
[-8.9041e-02, -1.1210e-01, -7.8223e-04],
[-2.9659e-02, -1.5199e-01, 3.9977e-06]]],
......
两种模型保存的大小不一样:

从上述输出结果中得到的结果是字典类型,其中参数的值也一起输出来了,如果想要查看具体的网络结构,则需要增加下述代码:
# 方式2-> 保存方式2,加载模型结构
vgg16 = torchvision.models.vgg16(pretrained=False)
vgg16.load_state_dict(torch.load("vgg16_model2.pth")) # 输出完整的模型结构,与第一种方式输出的模型结构相同
print(vgg16)
pytorch学习笔记(9)--神经网络模型的保存与读取的更多相关文章
- matlab学习笔记4--多媒体文件的保存和读取
一起来学matlab-matlab学习笔记4 数据导入和导出_2 多媒体文件的保存和读取 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...
- TensorFlow学习笔记(8)--网络模型的保存和读取【转】
转自:http://blog.csdn.net/lwplwf/article/details/62419087 之前的笔记里实现了softmax回归分类.简单的含有一个隐层的神经网络.卷积神经网络等等 ...
- 使用PyTorch简单实现卷积神经网络模型
这里我们会用 Python 实现三个简单的卷积神经网络模型:LeNet .AlexNet .VGGNet,首先我们需要了解三大基础数据集:MNIST 数据集.Cifar 数据集和 ImageNet 数 ...
- barabasilab-networkScience学习笔记3-随机网络模型
第一次接触复杂性科学是在一本叫think complexity的书上,Allen博士很好的讲述了数据结构与复杂性科学,barabasi是一个知名的复杂性网络科学家,barabasilab则是他所主导的 ...
- PyTorch学习笔记6--案例2:PyTorch神经网络(MNIST CNN)
上一节中,我们使用autograd的包来定义模型并求导.本节中,我们将使用torch.nn包来构建神经网络. 一个nn.Module包含各个层和一个forward(input)方法,该方法返回outp ...
- [PyTorch 学习笔记] 7.1 模型保存与加载
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson7/model_save.py https://githu ...
- Pytorch学习笔记(一)---- 基础语法
书上内容太多太杂,看完容易忘记,特此记录方便日后查看,所有基础语法以代码形式呈现,代码和注释均来源与书本和案例的整理. # -*- coding: utf-8 -*- # All codes and ...
- 【pytorch】pytorch学习笔记(一)
原文地址:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 什么是pytorch? pytorch是一个基于p ...
- Pytorch学习笔记(一)——简介
一.Tensor Tensor是Pytorch中重要的数据结构,可以认为是一个高维数组.Tensor可以是一个标量.一维数组(向量).二维数组(矩阵)或者高维数组等.Tensor和numpy的ndar ...
- [PyTorch 学习笔记] 3.1 模型创建步骤与 nn.Module
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/module_containers.py 这篇文章来看下 ...
随机推荐
- java 进阶P-3.3+P-3.4
Array list的操作 ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素.ArrayList 继承了 AbstractList , ...
- 异常机制(Exception)
异常机制(Exception) 什么是异常 实际工作中,遇到的情况不肯恩格式非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求.你的程序要打开某个文件,这个文件可能不存在或者格式不对,你要读 ...
- c++ 递推算法
各位大佬不妨先点个赞再看文章! 递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法.这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之 ...
- 【LeetCode】三数之和+四数之和(双指针)
之所以放在一起是因为,"四数之和"的解题方法基本与"三数之和"一致 由此我们可以推出n数之和的解法 本质上,我们只是使用双指针的方法降低此类问题的时间复杂度 当 ...
- 线程私有变量ThreadLocal详解
本文已收录至Github,推荐阅读 Java随想录 微信公众号:Java随想录 CSDN: 码农BookSea 烈火试真金,逆境试强者.--塞内加 目录 什么是ThreadLocal ThreadLo ...
- 欢迎来到 SIXIANG 的 blog~
很欢迎呢~ SX,海豹叉 Luogu OIer,whker,养老人
- DrCush_082020_血清阴性RA确诊延迟
转自Dr Jack Cush的Twitter (2020-08-20) 梅奥诊所:血清阴性RA的诊断存在延迟-血清阴性的首次关节肿胀距RA确诊为187天,而血清阳性者则为11天(P <.001) ...
- 如何将 Autofac 整合进 Net6.0 Core MVC 项目中
一.前言 1.前言 Asp.Net Core Mvc,我也用了很长一段时间了,它现在的编程模型和方式还是特别棒的,都是组件开发,什么都可以替换,当然了,您别抬杠,有些还是不能替换的.自从我们进入了跨平 ...
- 四,redis6版本的使用部署
继第三章(https://www.cnblogs.com/123456likun/p/13841540.html) 官网发布最新的6版本,有新的数据类型出现,给了小编我极大的动力,决定写几张关于最新的 ...
- Windows 干净启动
1. 卸载设备中全部的第三方反病毒软件与系统优化软件 (例如 360.腾讯电脑管家.鲁大师等).2. 按 "Windows 徽标键+R",输入 "msconfig&quo ...