一、网络模型的保存和加载

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)--神经网络模型的保存与读取的更多相关文章

  1. matlab学习笔记4--多媒体文件的保存和读取

    一起来学matlab-matlab学习笔记4 数据导入和导出_2 多媒体文件的保存和读取 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...

  2. TensorFlow学习笔记(8)--网络模型的保存和读取【转】

    转自:http://blog.csdn.net/lwplwf/article/details/62419087 之前的笔记里实现了softmax回归分类.简单的含有一个隐层的神经网络.卷积神经网络等等 ...

  3. 使用PyTorch简单实现卷积神经网络模型

    这里我们会用 Python 实现三个简单的卷积神经网络模型:LeNet .AlexNet .VGGNet,首先我们需要了解三大基础数据集:MNIST 数据集.Cifar 数据集和 ImageNet 数 ...

  4. barabasilab-networkScience学习笔记3-随机网络模型

    第一次接触复杂性科学是在一本叫think complexity的书上,Allen博士很好的讲述了数据结构与复杂性科学,barabasi是一个知名的复杂性网络科学家,barabasilab则是他所主导的 ...

  5. PyTorch学习笔记6--案例2:PyTorch神经网络(MNIST CNN)

    上一节中,我们使用autograd的包来定义模型并求导.本节中,我们将使用torch.nn包来构建神经网络. 一个nn.Module包含各个层和一个forward(input)方法,该方法返回outp ...

  6. [PyTorch 学习笔记] 7.1 模型保存与加载

    本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson7/model_save.py https://githu ...

  7. Pytorch学习笔记(一)---- 基础语法

    书上内容太多太杂,看完容易忘记,特此记录方便日后查看,所有基础语法以代码形式呈现,代码和注释均来源与书本和案例的整理. # -*- coding: utf-8 -*- # All codes and ...

  8. 【pytorch】pytorch学习笔记(一)

    原文地址:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 什么是pytorch? pytorch是一个基于p ...

  9. Pytorch学习笔记(一)——简介

    一.Tensor Tensor是Pytorch中重要的数据结构,可以认为是一个高维数组.Tensor可以是一个标量.一维数组(向量).二维数组(矩阵)或者高维数组等.Tensor和numpy的ndar ...

  10. [PyTorch 学习笔记] 3.1 模型创建步骤与 nn.Module

    本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/module_containers.py 这篇文章来看下 ...

随机推荐

  1. 最好用的在线图片压缩工具——TinyPNG

    前言 不知道大家在写博客或者工作时有没有这种烦恼呢?想要上传某张图片,但却因为图片文件过大而导致无法上传.这时你可能会去百度搜索关于图片压缩的软件,但往往下载的软件都是那种"垃圾软件&quo ...

  2. VBA中的(升降序)排名问题

    1 Sub 升序() 2 3 all_rows = Sheets(1).Range("a65536").End(xlUp).Row 4 5 With ActiveWorkbook. ...

  3. vue3和百度地图关键字检索 定位 点击定位

    效果图 在index.html中引入 百度地图开放平台 去申请你的ak 非常的简单可以自己百度 一下 <!-- 这个用官网给的有好多警告 更具百度的把 https://api.map.baidu ...

  4. 大数据实时多维OLAP分析数据库Apache Druid入门分享-上

    @ 目录 概述 定义 MPP和Lambda补充说明 概述 特征 适用场景 不适用场景 横向对比 部署 单机部署 入门示例 概述 定义 Apache Druid 官网地址 https://druid.a ...

  5. 结构型模式 - 桥接模式Bridge

    学习而来,代码是自己敲的.也有些自己的理解在里边,有问题希望大家指出. 桥接模式的定义与特点 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化.它是用组合关系代替继承关系来实现 ...

  6. C++迭代器种类与编译期间多态

    迭代器分类 C++ STL 中根据移动能力将迭代器分成了 5 类: Input Iterator 输入迭代器,只支持 operator++ 操作. Output Iterator 输出迭代器,只支持 ...

  7. 对List集合进行分页

    1 简要说明 有时候,我们有一个list集合,需要对它进行分页处理 下面的根据类MyPageUtilVo就可以做到 它自带泛型,适合各种集合 可以设置每页的大小(默认为10) 根据页码(从1开始)就可 ...

  8. Spring04-AOP(Debug查看执行流程)

    1 AOP的几个核心技术 AOP-面向切面编程的实现的核心技术:jvm运行期间对字节码进行修改或者动态生成新的字节码文件(asm技术). 2 AOP的几个核心概念 AOP在运行期间我们要对class文 ...

  9. Ubuntu vmware共享文件夹自动挂载

    自动挂载 修改/etc/fstab,加入如下内容 .host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults 0 0 手动挂载 修改/etc/fst ...

  10. ABAP 辨析CO|CN|CA|NA|CS|NS|CP|NP

    1.文档说明 本篇文档将通过举例,解析字符的比较运算符之间的用法和区别,涉及到的操作符:CO|CN|CA|NA|CS|NS|CP|NP 2.用法和区别 用法总览 以下举例,几乎都使用一个字符变量和一个 ...