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 爬取微信文章
Jan 30 Python
python基础教程之匿名函数lambda
Jan 17 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
让代码变得更易维护的7个Python库
Oct 09 Python
代码实例讲解python3的编码问题
Jul 08 Python
python向图片里添加文字
Nov 26 Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 Python
python实现猜拳游戏
Mar 04 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
Jun 10 Python
python中常见错误及解决方法
Jun 21 Python
基于Python实现简单学生管理系统
Jul 24 Python
Python机器学习算法之决策树算法的实现与优缺点
Python爬虫基础之爬虫的分类知识总结
pytorch中的numel函数用法说明
May 13 #Python
pytorch损失反向传播后梯度为none的问题
如何使用Python实现一个简易的ORM模型
May 12 #Python
用python删除文件夹中的重复图片(图片去重)
May 12 #Python
Pyhton模块和包相关知识总结
You might like
How do I change MySQL timezone?
2008/03/26 PHP
浅谈PHP 闭包特性在实际应用中的问题
2009/10/30 PHP
php高级编程-函数-郑阿奇
2011/07/04 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
jQuery 入门讲解1
2009/04/15 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
TensorFlow变量管理详解
2018/03/10 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
园林毕业生自我鉴定范文
2013/12/29 职场文书
实习老师离校感言
2014/02/03 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
产品生产计划书
2014/05/07 职场文书
房产公证委托书范本
2014/09/20 职场文书
大连导游词
2015/02/12 职场文书
大学生十八大感想
2015/08/11 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python