666DZY666 / micronet

micronet, a model compression and deploy lib. compression: 1、quantization: quantization-aware-training(QAT), High-Bit(>2b)(DoReFa/Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference)、Low-Bit(≤2b)/Ternary and Binary(TWN/BNN/XNOR-Net); post-training-quantization(PTQ), 8-bit(tensorrt); 2、 pruning: normal、regular and group convolutional channel pruning; 3、 group convolution structure; 4、batch-normalization fuse for quantization. deploy: tensorrt, fp32/fp16/int8(ptq-calibration)、op-adapt(upsample)、dynamic_shape
MIT License
2.2k stars 478 forks source link

如何获取压缩后的模型?以及压缩率的计算公式? #25

Open atrimage opened 4 years ago

atrimage commented 4 years ago

请教大佬,请问如何获取压缩后的模型?目前网上能搜到开源的代码只有filter pruning(整个通道的剪枝)如何获取剪枝后的模型,针对weight pruning方式(我理解为是3*3卷积核有很多为0),如何获取压缩后的模型,实在是找不到了。另外压缩率的公式如何计算?实际计算过程,需要考虑BN层的参数吗?因为没办法获取压缩后的模型,只能是计算整个网络有多少为0的卷积核数量除以总的卷积核数量,请问这样可以吗?

666DZY666 commented 4 years ago

1、通道剪枝后的模型好部署,非结构化剪枝、稀疏后的模型想部署加速需要专门适配,不好部署,且这个模型的体积一般是没变的。这里做的是通道剪枝。 2、1中说了,做稀疏的话一般这个模型体积是不变的,里面的0都是正常存着的。这里的压缩率目前是手动算的,BN参数这里做了融合,所以不需要计算,只算卷积参数就行。量化模型的大小是(模型参数量 * 每个参数bits / 8)Bytes,再用这个和之前的未量化模型比较得出压缩率。