额外参数_Pytorch获取模型参数情况的方法

8bb921fd04019cb4e25649aad481cee8.png

分享人工智能技术干货,专注深度学习与计算机视觉领域!

相较于Tensorflow,Pytorch一开始就是以动态图构建神经网络图的,其获取模型参数的方法也比较容易,既可以根据其内建接口自己写代码获取模型参数情况,也可以借助第三方库来获取模型参数情况,下面,就让我们一起来了解Pytorch获取模型参数情况的这两种方法!

f1f323a9983a3f5e77e1f74edc3106c2.png

Pytorch依据其内建接口自己写代码获取模型参数情况,我们主要是借助该框架提供的模型parameters()接口并获取对应参数的size来实现的,对于该参数是否属于可训练参数,那么我们可以依据Pytorch提供的requires_grad标志位来进行判断,具体方法如下代码所示:

# 定义总参数量、可训练参数量及非可训练参数量变量
Total_params = 0
Trainable_params = 0
NonTrainable_params = 0# 遍历model.parameters()返回的全局参数列表
for param in model.parameters():mulValue = np.prod(param.size())  # 使用numpy prod接口计算参数数组所有元素之积Total_params += mulValue  # 总参数量if param.requires_grad:Trainable_params += mulValue  # 可训练参数量else:NonTrainable_params += mulValue  # 非可训练参数量print(f'Total params: {Total_params}')
print(f'Trainable params: {Trainable_params}')
print(f'Non-trainable params: {NonTrainable_params}')

如无特殊设定,一般来说,因为我们是直接获取的model网络参数,因此很少有不可训练参数,往往NonTrainable_params输出结果是0。

ee23b84f1b9b51b5588ed4cfef492357.png

这里的第三方库是指torchsummary,欲要使用该库,首先我们得安装它,命令如下:

pip install torchsummary

然后,引入该库的summary方法:

from torchsummary import summary

最后,直接调用一条命令即可获取到Pytorch模型参数情况:

summary(model, input_size=(ch, h, w), batch_size=-1)

这里的ch是指输入张量的channel数量,h表示输入张量的高,w表示输入张量的宽。

我们从以上代码可以看到,借助第三方库torchsummary来获取Pytorch的模型参数情况非常之简便,只需确认好输入图像shape即可,那么,torchsummary的输出是如何的呢?

0256a1842eb557bf268862bce8a618d6.png

上图是应用torchsummary获得输出结果的一个示例,这与Tensorflow V2.x及其之后的版本的模型summary()输出是差不多的,输出信息里也是有各个类别的参数量情况、每层网络的参数量、额外的层名称及其输出shape大小,此外,torchsummary库还为我们计算了输入大小、模型参数大小及前向/反向传播参数量大小,可谓信息非常细致,这极大地方便了我们查看Pytorch模型的构造情况。

e7e83d671be0bb8409f8a31b24fbd5b6.png

除了上述两种获取Pytorch模型参数情况的方法,我们当然也可以直接使用model.state_dict()接口获取Pytorch网络参数,但是此种方法打印出来的信息结构非常混乱,也没有为我们进行有效的信息整理,因此很不建议该方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis-Plus之逻辑删除

概念 什么是逻辑删除 逻辑删除:假删除。将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录。 数据库实现思路:插入数据时,标记为未删除状态;查询、修改时,只获取未删除状态的数据进行操作;删除时则更新删除状态为已删除…

查看分支编码_MySQL分支数据库MariaDB之CentOS安装教程

MariaDB数据库管理系统是MySQL的一个分支,由MySQL的创始人Michael Widenius主持开发。采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。1…

关联规则算法c语言样例及分析_推荐系统总结系列-关联规则算法(四)

基于关联规则的推荐有三种方法:Apriori关联规则算法FP Tree关联规则算法;PrefixSpan关联规则算法;关联规则挖掘推荐算法:关联规则挖掘是一种在大规模交易中识别类似规则关系模式的通用技术,可以应用到推荐系统中。交易…

perclos嘴巴_一种基于视频分析的疲劳状态检测方法及装置与流程

本发明涉及疲劳检测领域,特别是涉及一种基于视频分析的疲劳状态综合检测方法及装置。背景技术:疲劳状态检测技术在交通运输、生产安全、教育培训等许多领域应用广泛。目前,疲劳状态检测的方法一般可分为接触式和非接触式两大类。其中&#xf…

Mybatis-Plus条件

Mybatis-Plus条件 条件构造器 说明: 以下出现的第一个入参boolean condition表示该条件是否加入最后生成的sql中没有标明condition的方法,默认为true以下出现的泛型Param均为Wrapper的子类实例(均具有AbstractWrapper的所有方法)以下方法在入参中出现的R为泛型,在普通wrapper中…

Mysql - Innodb锁、事务与隔离级别

我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库…

东南西北十字图_word画东南西北方向图标 怎么在Word里绘制方向十字图标

如果你使用的是2007版的话,可以在插入选项中找到插入图形选项,里面有一个箭头总汇,选择你所需要的就行了!如果是2003版的话,也可以在插入选项中找到图形,里面也有这一项!怎么样在word07文档里键…

语言非递归求解树的高度_算法素颜(11):无死角“盘”它!二分查找树

引言《菜鸟也能“种”好二叉树!》一文中提到了:为了方便查找,需要进行分层分类整理。而满足这种目标的数据结构之一就是树。树的叶子节点可以看作是最终要搜寻的目标物;叶子节点以上的每一层,都可以看作是一个大类别、…

Mysql InnoDB存储引擎的锁相关

Mysql InnoDB存储引擎的锁相关 InnoDB下,mysql四个级别隔离下加锁操作 四个级别隔离的写操作都加X锁串行化下读加S锁select … for update, select … lock in share mode 分别加x锁,s锁在需要加锁的场景下,会根据情况使用三种加锁策略&…

安装python37路径报错_Robot framework安装python3.7导入HttpLibrary.HTTP报错

报错信息:20200106 18:23:28.178 [WARN]: Importing test library "HttpLibrary.HTTP" failedTraceback (most recent call last):Importing test library HttpLibrary.HTTP failed: SyntaxError: invalid syntax (__init__.py, line 16)Traceback (most …

MySQLl的可串行化_mysql事务串行化的锁机制是怎样的?

1、mysql的可串行化 首先:可串行化serializable 这是事务的最高级别,在每条读的数据上,加上锁,使之不可能相互冲突,因此,会导致大量的超时现象。 解释如下: 以A,B用户为例&#…

显示器尺寸对照表_电脑显示器尺寸对照表一览,教你怎么选择最适合自己的显示器尺寸...

显示小课堂:显示器买大买小谁说了算? [本文来自:www.ii77.com]今天,笔者想和大家讨论一下关于显示器尺寸选择方面的问题。通过这两年显示器行业的发展我们不难看出,现在显示器的尺寸越来越大,三十几吋、四十…

MySQL事务隔离级别理解_解读MYSQL的可重复读、幻读及实现原理

前言 提到事务,你肯定不会陌生,最经典的例子就是转账,甲转账给乙100块,当乙的账户中到账100块的时候,甲的账户就应该减去100块,事务可以有效的做到这一点。 在MySQL中,事务支持实在引擎层实现的…

react 子传参父_React 子组件向父组件传值的方法

本文介绍了React 子组件向父组件传值的方法,分享给大家子组件需要控制自己的 state, 然后告诉父组件自己的state,通过props调用父组件中用来控制state的函数,在父组件中展示子组件的state变化。/***实现在输入框输入邮箱时&#x…

MySQ事务

事务 事务是访问数据库的一个操作序列,事务的正确执行使得数据库从一种状态转换为另一种状态。事务必须服从ACID原则。原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。 原子性:不可分割,事务要么全部被执…

boost互斥锁_boost锁使用总结

boost锁的概述:boost库中提供了mutex类与lock类,通过组合可以轻易的构建读写锁与互斥锁。举个通俗的例子,如果共享资源是一个自动锁住的房间,互斥体是钥匙,进入房间必须取钥匙,离开房间应该还钥匙。这就对应…

MySQL 是如何实现四大隔离级别的?

MySQL 是如何实现四大隔离级别的? 在mvcc下,mysql中用到的锁还是共享锁和排他锁么?如果是的话,那么是怎样结合锁和mvcc来实现rc和rr隔离级别的呢?还有mysql中在ru隔离级别下,两个事务同时读取数据对象A&am…

无符号右移负数_关于负数的右移与无符号右移运算小结

对于带符号右移,若为负数,则在存储时首位表示符号位,其值为1,表示该值是负数的移位,在移位过程中,高位补1,若符号位是0,表示是正数,在移位过程中高位补零,两者的前提是符号位保持不变:对于负数的右移:因为负数在内存中是以补码形式存在的,所有首先根据负…

Linux命令 移动/复制文件/目录到指定目录下

1、同一个服务器下复制文件或文件夹 1.1 复制文件 复制文件:把1.txt 复制到根目录下的sbin目录 cp 文件名(可带路径)目标路径(带路径)如:cp 1.txt ~/sbin/1,2 复制目录 复制目录:把relea…

springboot2稳定版本_重要版本Spring Boot 2.3.0发布 - spring.io

重要版本Spring Boot 2.3.0于2020年5月15日发布,此版本增加了大量新功能和改进。有关完整的升级说明以及新的和值得注意的功能,请参阅发行说明。2.3的新功能依赖升级Spring Boot 2.3移至几个Spring项目的新版本:Spring Data NeumannSpring HA…