模型参数数量与计算量

博客介绍了模型参数数量(params)与理论计算量(FLOPs)相关内容。参数数量关系到模型大小,单位常为M,模型大小通常是参数数量四倍。还给出了CONV卷积层和FC全连接层的参数数量及理论计算量的计算公式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原博地址:

https://blog.youkuaiyun.com/mzpmzk/article/details/82976871

参数数量(params)与理论计算量(FLOPs)

1.参数数量

      关系到模型大小,单位通常为M,通常参数用float32表示,所以模型大小通常是参数数量的四倍

2.计算公式

      假设卷积核大小为K_{_{h}}*K_{_{w}},输入通道数为C_{in},输出通道数为C_{out},输出特征图的高和宽分别为WH

     CONV卷积层的参数数量与理论计算量为:

      -params: K_{n}*K_{h}*C_{in}*C_{out}

      -FLOPs: K_{n}*K_{h}*C_{in}*C_{out}*H*W,即FLOPs = params*H*W

      

      FC全连接层

      -params:C_{in}*C_{out}

      -FLOPs:C_{in}*C_{out}

     

 

### 计算深度学习模型参数量 对于深度学习模型而言,参数量是指模型中可训练权重的数量。这些权重通常存在于线性变换(全连接层)、卷积核以及偏置项之中。 #### 卷积层参数量计算 假设有一个卷积层,其输入通道数为\(C_{in}\),输出通道数为\(C_{out}\),卷积核大小为\(K \times K\)。那么该卷积层的参数量可以表示为: \[ C_{in} * C_{out} * K^2 + C_{out} \] 其中额外加上\(C_{out}\)是因为每个输出通道都有一个对应的偏置项[^1]。 #### 全连接层参数量计算 如果存在一个全连接层,前一层有\(N\)个神经元,当前层有\(M\)个神经元,则这个全连接层的参数量为: \[ N*M + M \] 这里同样包含了\(M\)个偏置项。 ### 计算深度学习模型的计算复杂度 计算复杂度主要体现在浮点运算次数(FLOPs, Floating Point Operations Per Second)上,在实际应用中常用的是乘积累加操作(MACs, Multiply-Accumulate operations)[^2]。 #### 卷积层计算复杂度 继续以上述卷积层为例,当处理一张尺寸为\(H*W\)的特征图时,整个卷积过程中的MACs数目大约等于: \[ H*W*C_{out}*C_{in}*K^2 \] 这是因为每次滑动窗口都会执行一次局部区域内的矩阵相乘累加操作。 #### 使用工具辅助计算 为了简化上述手动计算的过程,可以通过一些自动化工具来统计模型内部各部分的具体开销情况。例如PyTorch框架下就有专门设计用来做这件事的小程序或库函数,可以直接调用并获得详细的报告信息。 ```python from thop import profile import torch.nn as nn import torchvision.models as models model = models.resnet18() input_tensor = torch.randn(1, 3, 224, 224) macs, params = profile(model, inputs=(input_tensor,)) print(f"FLOPs: {macs}, Parameters: {params}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值