Skip to main content

10.1 模型准备

本阶段介绍如何构建示例 1D-CNN 模型、将其导出为 int8 TFLite 格式、生成量化输入数据,以及生成嵌入 MCU 固件的 C 字节数组。 本阶段的源文件(model_keras.py、export_tflite.py、gen_input_data.py)随本文档一同提供。在运行任何脚本之前,请先在主机上安装一次依赖项:

10.1.1 参考模型架构

示例模型是一个使用随机权重的最小 1D-CNN。

10.1.1.1 模型计算图

BatchNormalization 在导出过程中被折叠进 Conv2D 权重中,不会作为单独的算子出现在量化计算图中。该 int8 模型恰好包含 3 个算子。

10.1.2 源文件

10.1.2.1 model_keras.py:模型定义

定义 Keras 模型架构。

10.1.2.2 export_tflite.py:导出 Float32 和 Int8 TFLite

基于 model_keras.py 构建模型,使用随机代表性数据集执行全整数量化,并验证两个输出。
运行:
输出: 该脚本还会打印 gen_input_data.py 内部使用的输入量化参数(scale、zero_point)。

10.1.2.3 gen_input_data.py:生成量化输入文件

直接从导出的 int8 模型中读取量化参数,然后基于真实数据集或合成数据生成 200 个样本的 int8 窗口。
运行:
输出(位于 inputs/ 文件夹中):

10.1.3 在主机上验证

在将模型集成到 MCU 固件之前,请确认模型能够使用生成的输入正确运行:
预期的形状和类型(具体数值取决于随机权重):