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 list转dict示例分享
Jan 28 Python
Python字符串和文件操作常用函数分析
Apr 08 Python
Python模块搜索概念介绍及模块安装方法介绍
Jun 03 Python
python3实现读取chrome浏览器cookie
Jun 19 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
Python数据可视化:幂律分布实例详解
Dec 07 Python
Python 中如何实现参数化测试的方法示例
Dec 10 Python
python高温预警数据获取实例
Jul 23 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
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
PHP学习之PHP运算符
2006/10/09 PHP
php eval函数一句话木马代码
2015/05/21 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
20款超赞的jQuery插件 Web开发人员必备
2011/02/26 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
html5菜单折纸效果
2014/04/22 HTML / CSS
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
物业管理应届生求职信
2013/10/28 职场文书
党校培训自我鉴定
2014/02/01 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
2014年维修工作总结
2014/11/22 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
个人年底工作总结
2015/03/10 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
Python 制作自动化翻译工具
2021/04/25 Python
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python