对于神经网络的深度学习模型来说,识别的精度是很重要,但是模型也不能是无限制的增大,因此需要对神经网络的深度学习模型进行模型的压缩等
首先最最基本的就是对模型的大小进行最基本的模型大小计算,以及使用训练时候的显存的计算
以下是计算存储的计算单位数据:
1 G = 1000 MB
1 M = 1000 KB
1 K = 1000 Byte
1 B = 8 bit
模型中参数的类型分为两种:
一般一个8-bit的整型变量所占的空间为1B也就是8bit。而32位的float则占4B也就是32bit
float32 单精度浮点型
int32 整型
神经网络的模型训练中消耗显存的地方主要分为两种:
模型自身的参数(params)
模型计算产生的中间变量(memory)
1.模型自身参数计算参数
卷积神经网路的自身模型参数
主要包括以下的几种网络层结构
卷积层,通常的conv2d
全连接层,也就是Linear层
BatchNorm层
Embedding层
而不占用显存的则是:
刚才说到的激活层Relu等
池化层
Dropout层
具体显存计算方式:
Conv2d(Cin, Cout, K): 参数数目:Cin × Cout × K × K
含义:卷积层的占用显存大小为
卷积层的输入通道 x 输出通道数 x 卷积核的大小
可以看出对于卷积层的压缩就是对卷积核的通道平进行裁剪,从而压缩卷积层
和卷积核的个数没关?No
下面的是卷积层的计算关系:
CNN的卷积核通道数 = 卷积输入层的通道