dzy

Results 90 comments of dzy

可以,更改网络结构就行(不过压缩的时候根据网络结构要微调,比如有1X1,3X3,5X5的filter,1X1 filter压缩的应该要少一些)

参考,相关资料_压缩_剪枝: Learning Efficient Convolutional Networks through Network Slimming

考虑两种情况,bn不融合不量化(精度高一些) 和 bn融合量化(速度快一些),一般使用后者。 loss-nan问题已修复。

qat中,若加载预训练浮点模型参数,bn则在其running参数基础上继续更新;在最近更新的qaft中,会冻结。 bn融合指的是,量化训练时bn参数依然存在,但不做bn运算,而是(qat中)更新后融合到前面的conv中;量化推理时,bn融合后完全消除。 可查看相关代码。

测试过resnet20,精度方面, W/A: 二值/4bits — 89.16% 4bits/4bits — 91.25% 二值/32bits — 90.64% 其他情况可以自己尝试一下

这个训练量化程序保存的模型参数形式是正常的浮点,但在训练过程中模拟了量化过程,即保存的这个参数其实已经是量化了的。可以再用个脚本提取参数(运行训练量化程序中的量化部分)来变成量化形式,8bits变为[0, 255]的整数,三值/二值变为+-1、0,可用于终端部署。WbWtAb-bn_merge-bn_merge.py中就做了这个参数提取,可以参考

1、采用量化/反量化这个方式在之前范围实现离散化(量化)。量化-反量化-卷积 和 量化-卷积-反量化的结果是一样的。这里的量化训练采用前者是为了方便写代码,模拟量化的过程,验证量化精度;量化部署采用后者,量化卷积实现加速; 2、BN是融合到卷积参数中了,且是先融合再量化,可参照项目进展3.1/3.4的描述及提交。(这是个好问题)

convtrans_bn_fuse还没有,有兴趣可以加加