完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一 试着将模型进行了esp-dl上int16和int8的量化,并在测试数据集上进行精度评估,其中int16的模型精度基本没有下降,但是int8的模型评估精度下降了很多,目前正在尝试修改Calibrator.set_method中的参数,与此同时有几个问题:
1.1 calibrator生成的model_calib.pickle文件,通过打印看到它是一个字典,关于其中的键值有没有相关的文档 1.2 eval.evalute_quantized_model 能否输出每一层的量化输出,而不只是最后一层,否则只能通过一次次的删除onnx模型后面的部分达到目的,太过麻烦 1.3 是否有pc端的eval/calibrator以及与libdl.a对应的c++库可以提供 这几个问题是遇到int8量化精度下降的问题时想到的关于esp-dl这边的定位方向,如果方向有问题或者有其他方向,也麻烦帮忙指出,感谢! 二 修改Calibrator.set_method遇到的问题: 2.1 calib = Calibrator('int8', 'per-tensor', 'minmax'),得到的模型参数cpp和hpp中的bias是int16的类型(可以正常评估推理),是否正常? 比如: namespace mb_v1_ssd_coefficient { const dl::Filter *get_conv_0_filter(); const dl::Bias *get_conv_0_bias(); const dl::Activation *get_conv_0_activation(); const dl::Filter *get_conv_2_filter(); const dl::Bias *get_conv_2_bias(); const dl::Activation *get_conv_2_activation(); 2.2 calib = Calibrator('int8', 'per-channel', 'minmax') ... Evaluator('int8', 'per-channel', 'esp32s3') ... [outputs, _] = eva.evalute_quantized_model(image, True) 在推理时出错: quantization_tool/linux/evaluator.so in evaluator.Evaluator.evalute_quantized_model() KeyError: 'input.4/QACC_shift1:0' |
|
相关推荐
1个回答
|
|
首先,我们来分析一下您的问题,并尝试为您提供解决方案。
问题1:关于model_calib.pickle文件中的键值 model_calib.pickle文件是一个包含量化模型校准信息的字典。这个字典中的键值可能包括量化参数、量化范围等信息。关于具体的键值,您可以参考ESP-DL的官方文档或者GitHub仓库,以获取更详细的信息。 问题2:eval.evalute_quantized_model输出每一层的量化输出 目前,ESP-DL的eval.evalute_quantized_model函数可能没有直接提供输出每一层量化输出的功能。但是,您可以尝试以下方法来实现这个需求: 1. 在量化模型的每一层后添加一个自定义的函数,用于输出该层的量化输出。 2. 在自定义函数中,您可以使用TensorFlow或ONNX的API来获取和打印每一层的输出。 问题3:是否有PC端的eval/calibrator以及与... 关于是否有PC端的eval/calibrator,您需要查看ESP-DL的官方文档或者GitHub仓库,以了解是否提供了相应的工具或库。如果没有,您可以考虑使用其他量化工具或库,如TensorFlow的Quantization Aware Training (QAT) 或 ONNX的量化工具。 现在,我们来解决您提到的int8量化模型精度下降的问题。以下是一些建议: 1. 检查您的量化策略:确保您使用了合适的量化策略,如对称量化或非对称量化。根据您的模型和数据集,选择最适合的量化策略。 2. 调整Calibrator.set_method中的参数:尝试使用不同的量化方法,如minmax、percentile等,以找到最佳的量化方法。 3. 优化模型结构:在量化过程中,某些层可能会对精度产生较大影响。尝试调整模型结构,如增加或减少某些层,以提高量化后的精度。 4. 使用更精细的量化粒度:尝试使用更精细的量化粒度,如int16或int8.2(8位整数,2位小数),以提高量化后的精度。 5. 考虑使用混合精度量化:在某些情况下,使用混合精度量化(即部分层使用int8,部分层使用int16)可能会提高量化后的精度。 希望这些建议能帮助您解决int8量化模型精度下降的问题。如果还有其他问题,请随时提问。 |
|
|
|
只有小组成员才能发言,加入小组>>
1032 浏览 1 评论
562浏览 6评论
470浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
454浏览 5评论
455浏览 4评论
428浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 02:36 , Processed in 0.951325 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号