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 相关文章推荐
python中的一些类型转换函数小结
Feb 10 Python
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
Python中的一些陷阱与技巧小结
Jul 10 Python
python多进程共享变量
Apr 06 Python
python文件名和文件路径操作实例
Sep 29 Python
Python中装饰器学习总结
Feb 10 Python
python实现自主查询实时天气
Jun 22 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
Pycharm 安装 idea VIM插件的图文教程详解
Feb 21 Python
pycharm激活码快速激活及使用步骤
Mar 12 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
Jan 27 Python
Python机器学习算法之决策树算法的实现与优缺点
Python爬虫基础之爬虫的分类知识总结
pytorch中的numel函数用法说明
May 13 #Python
pytorch损失反向传播后梯度为none的问题
如何使用Python实现一个简易的ORM模型
May 12 #Python
用python删除文件夹中的重复图片(图片去重)
May 12 #Python
Pyhton模块和包相关知识总结
You might like
Terran建筑一览
2020/03/14 星际争霸
php下载excel无法打开的解决方法
2013/12/24 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
javascript的函数作用域
2014/11/12 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
Python对列表排序的方法实例分析
2015/05/16 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
详解python字节码
2018/02/07 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
Python实现Linux监控的方法
2019/05/16 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
2020/02/20 Python
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
进口业务员岗位职责
2014/04/06 职场文书
地质工程专业毕业生求职信
2014/08/08 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
送给小学生的暑假礼物!小学生必背99首古诗
2019/07/02 职场文书
python多线程方法详解
2022/01/18 Python
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python