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实现周期性抓取网页内容的方法
Nov 04 Python
Python实现基本数据结构中栈的操作示例
Dec 04 Python
5个很好的Python面试题问题答案及分析
Jan 19 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
Jul 23 Python
Django 用户认证组件使用详解
Jul 23 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
Jan 08 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 Python
django实现HttpResponse返回json数据为中文
Mar 27 Python
初学者学习Python好还是Java好
May 26 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
Python pip install之SSL异常处理操作
Sep 03 Python
Python机器学习算法之决策树算法的实现与优缺点
Python爬虫基础之爬虫的分类知识总结
pytorch中的numel函数用法说明
May 13 #Python
pytorch损失反向传播后梯度为none的问题
如何使用Python实现一个简易的ORM模型
May 12 #Python
用python删除文件夹中的重复图片(图片去重)
May 12 #Python
Pyhton模块和包相关知识总结
You might like
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
一个简单的PHP入门源程序
2006/10/09 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
js中replace的用法总结
2013/12/27 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
jQuery响应滚动条事件功能示例
2017/10/14 jQuery
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
关于HTML5的data-*自定义属性的总结
2018/05/05 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
python利用datetime模块计算时间差
2015/08/04 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
Python IDLE清空窗口的实例
2018/06/25 Python
python实现简易动态时钟
2018/11/19 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
Python列表操作方法详解
2020/02/09 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
房地产销售大学生自我评价分享
2013/11/11 职场文书
绿色出行口号
2014/06/18 职场文书
先进党支部申报材料
2014/12/24 职场文书