BUG1989/caffe-int8-convert-tools

量化时对batchnorm层以及包含bias的conv层的处理方法?

Closed this issue · 1 comments

我用从caffe模型转换ncnn,量化前后,结果始终有比较大的差异。

我的模型结构类似于mobilenet-ssd,包含带权重的batchnorm层。将batchnorm层的数据merge到conv层后conv层包含了bias。看caffe2ncnn.cpp里面line 710有一句注释“we will not quantize the bias values”,想请教下量化时是忽略了conv层的bias项吗?如果这样的话应该怎样处理batchnorm层呢,只能使用instance norm吗?

还有一个现象,我在生成table时使用了不同的mean, norm参数,生成的table最后几行的数值不一样。但是使用不同的table量化后模型的输出结果是一样的,请问这可能是什么引起的呢?我使用的是offline的量化模式

看caffe-int8-convert-tool-dev-weight.py的weight_quantize方法应该是没有量化conv层的bias项