Pytorch 统计模型参数量的操作 param.numel()


Posted in Python onMay 13, 2021

param.numel()

返回param中元素的数量

Pytorch 统计模型参数量的操作 param.numel()

统计模型参数量

num_params = sum(param.numel() for param in net.parameters())
print(num_params)

补充:Pytorch 查看模型参数

Pytorch 查看模型参数

查看利用Pytorch搭建模型的参数,直接看程序

import torch
# 引入torch.nn并指定别名
import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):
    def __init__(self):
        # nn.Module子类的函数必须在构造函数中执行父类的构造函数
        super(Net, self).__init__()
        
        # 卷积层 '1'表示输入图片为单通道, '6'表示输出通道数,'3'表示卷积核为3*3
        self.conv1 = nn.Conv2d(1, 6, 3) 
        #线性层,输入1350个特征,输出10个特征
        self.fc1   = nn.Linear(1350, 10)  #这里的1350是如何计算的呢?这就要看后面的forward函数
    #正向传播 
    def forward(self, x): 
        print(x.size()) # 结果:[1, 1, 32, 32]
        # 卷积 -> 激活 -> 池化 
        x = self.conv1(x) #根据卷积的尺寸计算公式,计算结果是30,具体计算公式后面第二张第四节 卷积神经网络 有详细介绍。
        x = F.relu(x)
        print(x.size()) # 结果:[1, 6, 30, 30]
        x = F.max_pool2d(x, (2, 2)) #我们使用池化层,计算结果是15
        x = F.relu(x)
        print(x.size()) # 结果:[1, 6, 15, 15]
        # reshape,‘-1'表示自适应
        #这里做的就是压扁的操作 就是把后面的[1, 6, 15, 15]压扁,变为 [1, 1350]
        x = x.view(x.size()[0], -1) 
        print(x.size()) # 这里就是fc1层的的输入1350 
        x = self.fc1(x)        
        return x

net = Net()
for parameters in net.parameters():
    print(parameters)

输出为:

Parameter containing:
tensor([[[[-0.0104, -0.0555, 0.1417],
[-0.3281, -0.0367, 0.0208],
[-0.0894, -0.0511, -0.1253]]],


[[[-0.1724, 0.2141, -0.0895],
[ 0.0116, 0.1661, -0.1853],
[-0.1190, 0.1292, -0.2451]]],


[[[ 0.1827, 0.0117, 0.2880],
[ 0.2412, -0.1699, 0.0620],
[ 0.2853, -0.2794, -0.3050]]],


[[[ 0.1930, 0.2687, -0.0728],
[-0.2812, 0.0301, -0.1130],
[-0.2251, -0.3170, 0.0148]]],


[[[-0.2770, 0.2928, -0.0875],
[ 0.0489, -0.2463, -0.1605],
[ 0.1659, -0.1523, 0.1819]]],


[[[ 0.1068, 0.2441, 0.3160],
[ 0.2945, 0.0897, 0.2978],
[ 0.0419, -0.0739, -0.2609]]]])
Parameter containing:
tensor([ 0.0782, 0.2679, -0.2516, -0.2716, -0.0084, 0.1401])
Parameter containing:
tensor([[ 1.8612e-02, 6.5482e-03, 1.6488e-02, ..., -1.3283e-02,
1.8715e-02, 5.4037e-03],
[ 1.8569e-03, 1.8022e-02, -2.3465e-02, ..., 1.6527e-03,
2.0443e-02, -2.2009e-02],
[ 9.9104e-03, 6.6134e-03, -2.7171e-02, ..., -5.7119e-03,
2.4532e-02, 2.2284e-02],
...,
[ 6.9182e-03, 1.7279e-02, -1.7783e-03, ..., 1.9354e-02,
2.1105e-03, 8.6245e-03],
[ 1.6877e-02, -1.2414e-02, 2.2409e-02, ..., -2.0604e-02,
1.3253e-02, -3.6008e-03],
[-2.1598e-02, 2.5892e-02, 1.9372e-02, ..., 1.4159e-02,
7.0983e-03, -2.3713e-02]])
Parameter containing:
tensor(1.00000e-02 *
[ 1.4703, 1.0289, 2.5069, -2.2603, -1.5218, -1.7019, 1.2569,
0.4617, -2.3082, -0.6282])

for name,parameters in net.named_parameters():
    print(name,':',parameters.size())

输出:

conv1.weight : torch.Size([6, 1, 3, 3])
conv1.bias : torch.Size([6])
fc1.weight : torch.Size([10, 1350])
fc1.bias : torch.Size([10])

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

Python 相关文章推荐
Linux下使用python自动修改本机网关代码分享
May 21 Python
简单实现Python爬取网络图片
Apr 01 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
python中实现字符串翻转的方法
Jul 11 Python
python实现桌面气泡提示功能
Jul 29 Python
django 连接数据库 sqlite的例子
Aug 14 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
Autopep8的使用(python自动编排工具)
Mar 02 Python
python 爬取华为应用市场评论
May 29 Python
python 中yaml文件用法大全
Jul 04 Python
Python机器学习算法之决策树算法的实现与优缺点
Python爬虫基础之爬虫的分类知识总结
pytorch中的numel函数用法说明
May 13 #Python
pytorch损失反向传播后梯度为none的问题
如何使用Python实现一个简易的ORM模型
May 12 #Python
用python删除文件夹中的重复图片(图片去重)
May 12 #Python
Pyhton模块和包相关知识总结
You might like
PHP常用代码
2006/11/23 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
python通过floor函数舍弃小数位的方法
2015/03/17 Python
利用django如何解析用户上传的excel文件
2017/07/24 Python
python实现数据库跨服务器迁移
2018/04/12 Python
python+mysql实现教务管理系统
2019/02/20 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
英国家用电器购物网站:Hughes
2018/02/23 全球购物
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
一套VC试题
2015/01/23 面试题
单位提档介绍信
2014/01/17 职场文书
趣味比赛活动方案
2014/02/15 职场文书
公休请假条
2014/04/11 职场文书
政工例会汇报材料
2014/08/26 职场文书
教师岗位职责
2015/02/03 职场文书
公司员工管理制度
2015/08/04 职场文书
母亲节主题班会
2015/08/14 职场文书
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL