我试着用经过训练的EfficientNetB0来执行静态量化。一旦我应用torch.quantization.convert将模型从float32转换为int8,就会发生一个错误,具体而言: NotImplementedError:无法使用'QuantizedCPU‘后端的参数运行'aten::silu.out’。我想知道是否有人遇到了同样的错误,并能够解决它。我也尝试了移动网络,我得到了一个错误的风格(不一样)。
先谢谢你。
发布于 2022-04-04 07:57:14
在8位量化中,漏ReLu的实现并不容易,许多框架在没有模型退化的情况下无法实现它(256个数字代表整个输出范围)。
然而,有一个在8位中量化这一层的技巧。
1/您可以尝试推断训练数据集并测量该层的输出激活范围,以复制此函数的边界。这通常被称为PostQuantize
2/降低激活函数的复杂度。SiLu x*sigmoid(x)
=> HardSwish x*relu6(x + 3)*0.166666667
.这是ReLu => ReLu6的思想,其中输出从0到6是有界的。
https://stackoverflow.com/questions/71733167
复制相似问题