SqueezeNet量化

1)根目录下执行 sh ./data/ilsvrc12/get_ilsvrc_aux.sh  获得数据集的train.txt以及val.txt

2)  根目录下执行 sh ./examples/imagenet/create_imagenet.sh 获得train、val的lmdb文件(注意要下载数据集并修改相应路径)

3)下载模型文件,位置为models/SqueezeNet/ ,github下载链接

4)执行./examples/ristretto/00_quantize_squeezenet.sh 得到下面的结果:

默认为Dynamic fixed 量化方式,分别对Fc/Conv/Activate进行了量化,并测出量化不同层的情况下16bit、8bit、4bit、1bit下的量化精度,具体代码详解后面博客会介绍。

Finetune

如果前面一切都顺利,文件也都放在规定位置,那finetune就很简单了,如果不是,改一下训练脚本相应路径,然后执行:sh ./examples/ristretto/01_finetune_squeezenet.sh

训练log:

benchmark

修改finetune之后的caffemodel路径,执行脚本sh ./examples/ristretto/02_benchmark_fixedpoint_squeezenet.sh

得到finetune之后的精度(finetune2000代之后的model比浮点模型低0.3个点,可以多测几代选比较高的):

 

 

量化源码会在后面博客详细介绍,欢迎留言讨论

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐