模型大小 与参数量计算

1.model size

就是模型的大小,我们一般使用参数量parameter来衡量,注意,它的单位是。但是由于很多模型参数量太大,所以一般取一个更方便的单位:兆(M) 来衡量。比如ResNet-152的参数量可以达到60 million = 0.0006M。有些时候,model size在实际计算时除了包含参数量以外,还包括网络架构信息和优化器信息等。比如存储一个一般的CNN模型(ImageNet训练)需要大于300MB。

M和MB的换算关系:

比如说我有一个模型参数量是1M,在一般的深度学习框架中(比如说PyTorch),一般是32位存储。32位存储的意思就是1个参数用32个bit来存储。那么这个拥有1M参数量的模型所需要的存储空间的大小即为:1M * 32 bit = 32Mb = 4MB。因为1 Byte = 8 bit。现在的quantization技术就是减少参数量所占的位数:比如我用8位存储,那么:所需要的存储空间的大小即为:1M * 8 bit = 8Mb = 1MB。

2.参数量计算方法

卷积层参数计算方法:

 

### 计算深度学习模型参数量 对于深度学习模型而言,参数量是指模型中可训练权重的数量。这些权重通常存在于线性变换(全连接层)、卷积核以及偏置项之中。 #### 卷积层参数量计算 假设有一个卷积层,其输入通道数为\(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}") ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值