Python如何加载模型并查看网络


Posted in Python onJuly 15, 2022

加载模型并查看网络

加载模型,以vgg19为例。

打开终端

> python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit
(AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from torchvision import models
>>> model = models.vgg19(pretrained=True) #此时如果是第一次加载会开始下载模型的pth文件
>>> print(model.model)

结果:

VGG(
  (features): Sequential(
    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU(inplace)
    (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (3): ReLU(inplace)
    (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)
    (7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (8): ReLU(inplace)
    (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)
    (12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (13): ReLU(inplace)
    (14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (15): ReLU(inplace)
    (16): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (17): ReLU(inplace)
    (18): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (19): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (20): ReLU(inplace)
    (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (22): ReLU(inplace)
    (23): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (24): ReLU(inplace)
    (25): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (26): ReLU(inplace)
    (27): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (29): ReLU(inplace)
    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (31): ReLU(inplace)
    (32): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (33): ReLU(inplace)
    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (35): ReLU(inplace)
    (36): 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)
    (2): Dropout(p=0.5)
    (3): Linear(in_features=4096, out_features=4096, bias=True)
    (4): ReLU(inplace)
    (5): Dropout(p=0.5)
    (6): Linear(in_features=4096, out_features=1000, bias=True)
  )
)

注意,直接打印模型是没有办法看到模型结构的,只能看到带模型参数的pth文件内容;需要打印model.model才可以看到模型本身。

神经网络_模型的保存,模型的加载

模型的保存(torch.save)

方式1(模型结构+模型参数)

参数:保存位置

# 创建模型
vgg16 = torchvision.models.vgg16(pretrained=False)
# 保存方式1——模型结构+模型参数
torch.save(vgg16, "vgg16_method1.pth")

方式2(模型参数)

# 保存方式2  模型参数(官方推荐)。保存成字典,只保存网络模型中的一些参数
torch.save(vgg16.state_dict(), "vgg16_method2.pth")

模型的加载(torch.load)

对应保存方式1

参数:模型路径

# 方式1 --》 保存方式1
model1 = torch.load("vgg16_method1.pth")

对应保存方式2

vgg16.load_state_dict("vgg16_method2.pth")

输出为字典形式。若要回复网络,采用以下形式:

model2 = torch.load("vgg16_method2.pth")  #输出是字典形式
# 恢复网络结构
vgg16 = torchvision.models.vgg16(pretrained=False)
vgg16.load_state_dict(model2)

方式1存储,加载时需注意事项

新建自己的网络:

class test(nn.Module):
    def __init__(self):
        super(lh, self).__init__()
        self.conv1 = nn.Conv2d(3, 64, kernel_size=3)

    def forward(self, x):
        x = self.conv1(x)
        return x

保存自己的网络:

Test = test()
# 保存自己定义的网络
torch.save(Test, "Test_method1.pth")

加载自己的网络:

model3 = torch.load("Test_method1.pth")

会报错!!!!!!

Python如何加载模型并查看网络

解决办法(需要注意):

将定义的网络复制到加载的python文件中:

class test(nn.Module):
    def __init__(self):
        super(test, self).__init__()
        self.conv1 = nn.Conv2d(3, 64, kernel_size=3)

    def forward(self, x):
        x = self.conv1(x)
        return x
model3 = torch.load("Test_method1.pth")

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python检查序列seq是否含有aset中项的方法
Jun 30 Python
python创建列表和向列表添加元素的实现方法
Dec 25 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
Django unittest 设置跳过某些case的方法
Dec 26 Python
python实现年会抽奖程序
Jan 22 Python
Python3 修改默认环境的方法
Feb 16 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
django API 中接口的互相调用实例
Apr 01 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
Python configparser模块操作代码实例
Jun 08 Python
python类共享变量操作
Sep 03 Python
Python list和str互转的实现示例
Nov 16 Python
Python绘制散点图之可视化神器pyecharts
Jul 07 #Python
Python可视化神器pyecharts之绘制箱形图
Jul 07 #Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 #Python
Django数据库(SQlite)基本入门使用教程
Jul 07 #Python
Python可视化神器pyecharts之绘制地理图表练习
Django中celery的使用项目实例
Python可视化神器pyecharts绘制地理图表
You might like
PHP动态变静态原理
2006/11/25 PHP
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
js模块加载方式浅析
2017/08/12 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
Python中删除文件的程序代码
2011/03/13 Python
Python脚本实现集群检测和管理功能
2015/03/06 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
详解Python发送email的三种方式
2018/10/18 Python
简单了解Django ContentType内置组件
2019/07/23 Python
深入了解NumPy 高级索引
2020/07/24 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
用纯css3和html制作泡沫对话框实现代码
2013/03/21 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
NET程序员上机面试题
2015/05/23 面试题
优秀体育委员自荐书
2014/01/31 职场文书
毕业设计说明书
2014/05/07 职场文书
施工安全责任书范本
2014/07/24 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
早恋主题班会
2015/08/14 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python