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中global用法实例分析
Apr 30 Python
python3.5仿微软计算器程序
Mar 30 Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 Python
Python简单读写Xls格式文档的方法示例
Aug 17 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
Python 判断图像是否读取成功的方法
Jan 26 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
Mar 05 Python
python实现名片管理系统项目
Apr 26 Python
树莓派与PC端在局域网内运用python实现即时通讯
Jun 22 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 Python
关于python爬虫应用urllib库作用分析
Sep 04 Python
Python机器学习算法之决策树算法的实现与优缺点
Python爬虫基础之爬虫的分类知识总结
pytorch中的numel函数用法说明
May 13 #Python
pytorch损失反向传播后梯度为none的问题
如何使用Python实现一个简易的ORM模型
May 12 #Python
用python删除文件夹中的重复图片(图片去重)
May 12 #Python
Pyhton模块和包相关知识总结
You might like
Smarty模板快速入门
2007/01/04 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
javascript 常用关键字列表集合
2007/12/04 Javascript
jquery 上下滚动广告
2009/06/17 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
JavaScript入门基础
2015/08/12 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
Javascript中arguments对象的详解与使用方法
2016/10/04 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
Python返回数组/List长度的实例
2018/06/23 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
Python中函数的返回值示例浅析
2019/08/28 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
2020/08/19 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
什么叫做SQL注入,如何防止
2016/10/04 面试题
优秀求职信范文分享
2013/12/19 职场文书
证婚人搞笑证婚词
2014/01/10 职场文书
军训自我鉴定
2014/01/22 职场文书
保险公司开门红口号
2014/06/21 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
2014年店长工作总结
2014/11/17 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
mysql数据插入覆盖和时间戳的问题及解决
2022/03/25 MySQL