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赋值语句后逗号的作用分析
Jun 08 Python
利用Python的Django框架生成PDF文件的教程
Jul 22 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
Jan 07 Python
python中reload(module)的用法示例详解
Sep 15 Python
Python实现matplotlib显示中文的方法详解
Feb 06 Python
python tornado修改log输出方式
Nov 18 Python
PyQt5多线程刷新界面防假死示例
Dec 13 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
使用Pycharm分段执行代码
Apr 15 Python
解决python中import文件夹下面py文件报错问题
Jun 01 Python
python文件及目录操作代码汇总
Jul 08 Python
python中四舍五入的正确打开方式
Jan 18 Python
Python机器学习算法之决策树算法的实现与优缺点
Python爬虫基础之爬虫的分类知识总结
pytorch中的numel函数用法说明
May 13 #Python
pytorch损失反向传播后梯度为none的问题
如何使用Python实现一个简易的ORM模型
May 12 #Python
用python删除文件夹中的重复图片(图片去重)
May 12 #Python
Pyhton模块和包相关知识总结
You might like
制作美丽的拉花
2021/03/03 冲泡冲煮
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
js对象的复制继承实例
2015/01/10 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
2015/12/04 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
简述vue路由打开一个新的窗口的方法
2018/11/29 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
python正则表达式match和search用法实例
2015/03/26 Python
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
音乐专业应届生教师求职信
2013/11/04 职场文书
数控机床专业自荐信
2014/05/19 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
ant design charts 获取后端接口数据展示
2022/05/25 Javascript