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实现批量下载图片的方法
Jul 08 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
pip安装Python库时遇到的问题及解决方法
Nov 23 Python
Python高级用法总结
May 26 Python
Django使用redis缓存服务器的实现代码示例
Apr 28 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
python实现键盘输入的实操方法
Jul 16 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
keras的ImageDataGenerator和flow()的用法说明
Jul 03 Python
Scrapy模拟登录赶集网的实现代码
Jul 07 Python
如何基于pandas读取csv后合并两个股票
Sep 25 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 Python
Python机器学习算法之决策树算法的实现与优缺点
Python爬虫基础之爬虫的分类知识总结
pytorch中的numel函数用法说明
May 13 #Python
pytorch损失反向传播后梯度为none的问题
如何使用Python实现一个简易的ORM模型
May 12 #Python
用python删除文件夹中的重复图片(图片去重)
May 12 #Python
Pyhton模块和包相关知识总结
You might like
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
分享10段PHP常用代码
2015/11/11 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
php生成HTML文件的类方法
2019/10/11 PHP
js控制框架刷新
2008/08/01 Javascript
JavaScript 设计模式学习 Factory
2009/07/29 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
python里glob模块知识点总结
2021/01/05 Python
python time.strptime格式化实例详解
2021/02/03 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
美国家居装饰店:Pier 1
2019/09/04 全球购物
公司人力资源管理制度
2015/08/05 职场文书
七年级作文之下雨天
2019/12/23 职场文书