tensorflow - Elu int8 量化是否适用于 Tensorflow Lite?
问题描述
上下文:
我想在 Arduino 上运行 DL 模型的推理,并且由于我没有太多可用内存,我需要对我的模型进行后期训练int8 量化。
但是我的模型的量化似乎不起作用,它似乎与模型中的Elu 激活函数有关。
确实,在 Python 上模型的转换和量化以及在 Arduino 上的推理过程中,我都没有出错,但是 Arduino上模型的必要大小与没有 quantization 的情况相同。
我尝试了什么:
- 我重新训练了一个模型,在该模型中我将 Elu 更改为Relu激活函数。然后量化工作:感谢线路:
tflInterpreter->arena_used_bytes()
在Arduino上,我可以看到量化帮助我将模型的必要大小减少了3。 - 我在 Netron App 上分析了模型(用 Elu 量化),我意识到每次调用 Elu 函数之前和之后都有反量化和重新量化的步骤:模型去量化和重新量化。我不明白为什么这样做,因为它没有附加 Relu 函数。
- 最后,我在 Tensorflow Git 上找到了这个提交,这让我相信 Elu 的 int8 量化已经实现:Commit for Elu int8 quantization TF。然而,他们提到了一种 LUT 方法,我不理解并且可能(?)与我面临的麻烦有关。
上下文:
- TF 2.5。
- Colab 上的训练、转换和量化
- 带有 TFLite 版本 2.5 的 Arduino
有没有人在量化包含 Elu 的模型时面临同样的麻烦?你知道如何解决这个问题吗?
非常感谢!
解决方案
推荐阅读
- javascript - 在javascript中获取对象数组
- apache-kafka - 在 kafka-consumer-perf-test 中使用参数 num-fetch-threads 和线程
- java - 在 Stream 中抛出 Throwable -> “未处理的异常类型 Throwable”
- javascript - 检查 value 是否是一个普通的对象文字
- discord.js - 如果用户在 discord.js 中提供了 20 条消息(超过 14 天)用于批量删除,我如何仅删除 10 条消息
- javascript - Mapbox:某些样式没有预览,它们不适用于我的项目
- google-analytics-api - 从 aws sagemaker 调用谷歌分析 api
- flutter - How to update the amount value when the user add data and store it to list view flutter
- c++ - 如何更改 CIPAddressCtrl 的背景颜色?
- graphql - 查询不会通过 GraphQL 从 DynamoDB 返回某些项目