pytorch 求网络模型参数实例


Posted in Python onDecember 30, 2019

用pytorch训练一个神经网络时,我们通常会很关心模型的参数总量。下面分别介绍来两种方法求模型参数

一 .求得每一层的模型参数,然后自然的可以计算出总的参数。

1.先初始化一个网络模型model

比如我这里是 model=cliqueNet(里面是些初始化的参数)

2.调用model的Parameters类获取参数列表

pytorch 求网络模型参数实例

一个典型的操作就是将参数列表传入优化器里。如下

optimizer = optim.Adam(model.parameters(), lr=opt.lr)

言归正传,继续回到参数里面,参数在网络里面就是variable,下面分别求每层的尺寸大小和个数。

函数get_number_of_param( ) 里面的参数就是刚才第一步初始化的model

def get_number_of_param(model):
  """get the number of param for every element"""
  count = 0
  for param in model.parameters():
    param_size = param.size()
    count_of_one_param = 1
    for dis in param_size:
      count_of_one_param *= dis
    print(param.size(), count_of_one_param)
    count += count_of_one_param
    print(count)
  print('total number of the model is %d'%count)

再来看看结果:

torch.Size([64, 1, 3, 3]) 576
576
torch.Size([64]) 64
640
torch.Size([6, 36, 64, 3, 3]) 124416
125056
torch.Size([30, 36, 36, 3, 3]) 349920
474976
torch.Size([12, 36]) 432
475408
torch.Size([6, 36, 216, 3, 3]) 419904
895312
torch.Size([30, 36, 36, 3, 3]) 349920
1245232
torch.Size([12, 36]) 432
1245664
torch.Size([6, 36, 216, 3, 3]) 419904
1665568
torch.Size([30, 36, 36, 3, 3]) 349920
2015488
torch.Size([12, 36]) 432
2015920
torch.Size([6, 36, 216, 3, 3]) 419904
2435824
torch.Size([30, 36, 36, 3, 3]) 349920
2785744
torch.Size([12, 36]) 432
2786176
torch.Size([216, 216, 1, 1]) 46656
2832832
torch.Size([216]) 216
2833048
torch.Size([108, 216]) 23328
2856376
torch.Size([108]) 108
2856484
torch.Size([216, 108]) 23328
2879812
torch.Size([216]) 216
2880028
torch.Size([216, 216, 1, 1]) 46656
2926684
torch.Size([216]) 216
2926900
torch.Size([108, 216]) 23328
2950228
torch.Size([108]) 108
2950336
torch.Size([216, 108]) 23328
2973664
torch.Size([216]) 216
2973880
torch.Size([216, 216, 1, 1]) 46656
3020536
torch.Size([216]) 216
3020752
torch.Size([108, 216]) 23328
3044080
torch.Size([108]) 108
3044188
torch.Size([216, 108]) 23328
3067516
torch.Size([216]) 216
3067732
torch.Size([140, 280, 1, 1]) 39200
3106932
torch.Size([140]) 140
3107072
torch.Size([216, 432, 1, 1]) 93312
3200384
torch.Size([216]) 216
3200600
torch.Size([216, 432, 1, 1]) 93312
3293912
torch.Size([216]) 216
3294128
torch.Size([9, 572, 3, 3]) 46332
3340460
torch.Size([9]) 9
3340469
total number of the model is 3340469

可以通过计算验证一下,发现参数与网络是一致的。

二:一行代码就可以搞定参数总个数问题

2.1 先来看看torch.tensor.numel( )这个函数的功能就是求tensor中的元素个数,在网络里面每层参数就是多维数组组成的tensor。

实际上就是求多维数组的元素个数。看代码。

print('cliqueNet parameters:', sum(param.numel() for param in model.parameters()))

当然上面代码中的model还是上面初始化的网络模型。

看看两种的计算结果

torch.Size([64, 1, 3, 3]) 576
576
torch.Size([64]) 64
640
torch.Size([6, 36, 64, 3, 3]) 124416
125056
torch.Size([30, 36, 36, 3, 3]) 349920
474976
torch.Size([12, 36]) 432
475408
torch.Size([6, 36, 216, 3, 3]) 419904
895312
torch.Size([30, 36, 36, 3, 3]) 349920
1245232
torch.Size([12, 36]) 432
1245664
torch.Size([6, 36, 216, 3, 3]) 419904
1665568
torch.Size([30, 36, 36, 3, 3]) 349920
2015488
torch.Size([12, 36]) 432
2015920
torch.Size([6, 36, 216, 3, 3]) 419904
2435824
torch.Size([30, 36, 36, 3, 3]) 349920
2785744
torch.Size([12, 36]) 432
2786176
torch.Size([216, 216, 1, 1]) 46656
2832832
torch.Size([216]) 216
2833048
torch.Size([108, 216]) 23328
2856376
torch.Size([108]) 108
2856484
torch.Size([216, 108]) 23328
2879812
torch.Size([216]) 216
2880028
torch.Size([216, 216, 1, 1]) 46656
2926684
torch.Size([216]) 216
2926900
torch.Size([108, 216]) 23328
2950228
torch.Size([108]) 108
2950336
torch.Size([216, 108]) 23328
2973664
torch.Size([216]) 216
2973880
torch.Size([216, 216, 1, 1]) 46656
3020536
torch.Size([216]) 216
3020752
torch.Size([108, 216]) 23328
3044080
torch.Size([108]) 108
3044188
torch.Size([216, 108]) 23328
3067516
torch.Size([216]) 216
3067732
torch.Size([140, 280, 1, 1]) 39200
3106932
torch.Size([140]) 140
3107072
torch.Size([216, 432, 1, 1]) 93312
3200384
torch.Size([216]) 216
3200600
torch.Size([216, 432, 1, 1]) 93312
3293912
torch.Size([216]) 216
3294128
torch.Size([9, 572, 3, 3]) 46332
3340460
torch.Size([9]) 9
3340469
total number of the model is 3340469
cliqueNet parameters: 3340469

可以看出两种计算出来的是一模一样的。

以上这篇pytorch 求网络模型参数实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python的urllib和urllib2模块制作爬虫的实例教程
Jan 20 Python
Python基于socket模块实现UDP通信功能示例
Apr 10 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
对python3 urllib包与http包的使用详解
May 10 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
May 18 Python
使用Django启动命令行及执行脚本的方法
May 29 Python
详解Python3的TFTP文件传输
Jun 26 Python
numpy concatenate数组拼接方法示例介绍
May 27 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
May 26 Python
python爬虫请求头设置代码
Jul 28 Python
字典算法实现及操作 --python(实用)
Mar 31 Python
python可视化之颜色映射详解
Sep 15 Python
利用python3 的pygame模块实现塔防游戏
Dec 30 #Python
pytorch 批次遍历数据集打印数据的例子
Dec 30 #Python
python多线程使用方法实例详解
Dec 30 #Python
Python动态声明变量赋值代码实例
Dec 30 #Python
使用pytorch实现可视化中间层的结果
Dec 30 #Python
在Pytorch中计算自己模型的FLOPs方式
Dec 30 #Python
Pytorch之保存读取模型实例
Dec 30 #Python
You might like
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
php发送邮件的问题详解
2015/06/22 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
深入理解Python3 内置函数大全
2017/11/23 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
Python实现简易Web爬虫详解
2018/01/03 Python
python中的闭包函数
2018/02/09 Python
python计算两个地址之间的距离方法
2018/06/09 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
python批量生成条形码的示例
2020/10/10 Python
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
生产厂长岗位职责
2014/02/21 职场文书
《守株待兔》教学反思
2014/03/01 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
家庭贫困证明
2015/06/16 职场文书
培训简讯范文
2015/07/20 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
Python基础之条件语句详解
2021/06/16 Python
Python基本数据类型之字符串str
2021/07/21 Python