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中的两个内置模块介绍
Apr 05 Python
Python3.2中的字符串函数学习总结
Apr 23 Python
详解Django框架中的视图级缓存
Jul 23 Python
Python cx_freeze打包工具处理问题思路及解决办法
Feb 13 Python
python 如何快速找出两个电子表中数据的差异
May 26 Python
微信跳一跳游戏python脚本
Apr 01 Python
python实现windows下文件备份脚本
May 27 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
Dec 14 Python
Python实现Linux监控的方法
May 16 Python
在django admin中添加自定义视图的例子
Jul 26 Python
如何通过Python3和ssl实现加密通信功能
May 09 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 Python
Python机器学习算法之决策树算法的实现与优缺点
Python爬虫基础之爬虫的分类知识总结
pytorch中的numel函数用法说明
May 13 #Python
pytorch损失反向传播后梯度为none的问题
如何使用Python实现一个简易的ORM模型
May 12 #Python
用python删除文件夹中的重复图片(图片去重)
May 12 #Python
Pyhton模块和包相关知识总结
You might like
基于文本的留言簿
2006/10/09 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
js 深拷贝函数
2008/12/04 Javascript
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
jQuery模拟超链接点击效果代码
2013/04/21 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
2017/04/01 jQuery
bootstrap轮播图示例代码分享
2017/05/17 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
举例讲解Python中装饰器的用法
2015/04/27 Python
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
捷科时代的软件测试笔试题
2015/11/09 面试题
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
纺织工程专业个人求职信范文
2014/01/27 职场文书
音乐教师求职信范文
2015/03/20 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
田径运动会通讯稿
2015/07/18 职场文书