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 14 Python
Python中的zip函数使用示例
Jan 29 Python
Python中的测试模块unittest和doctest的使用教程
Apr 14 Python
Python正则表达式常用函数总结
Jun 24 Python
Python3学习笔记之列表方法示例详解
Oct 06 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
Django框架模板文件使用及模板文件加载顺序分析
May 23 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
对django views中 request, response的常用操作详解
Jul 17 Python
tensorflow如何批量读取图片
Aug 29 Python
浅谈Python响应式类库RxPy
Jun 14 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 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 新手入门
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
php常用图片处理类
2016/03/16 PHP
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
django 模型中的计算字段实例
2020/05/19 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
Solaris操作系统的线程机制
2015/07/28 面试题
历史系自荐信范文
2013/12/24 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
工地质量标语
2014/06/12 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
博士给导师的自荐信
2015/03/06 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
员工工作心得体会
2019/05/07 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL