TensorFlow Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 loT 设备上运行模型,以便实现设备端机器学习。
支持多平台
支持多种平台,涵盖 Android 和 iOS 设备、嵌入式 Linux 和微控制器。
原理/流程
工作原理或者使用流程就是上面4步,1)与2)创建或者转换一个TensorFlow Lite 模型;3)部署在手机等终端,使用模型进行推理;4)TensorFlow Lite 提供了优化模型大小(size)和性能(performance)的工具,通常对准确性(accuracy)影响甚微。优化模型可能需要稍微复杂的训练(training),转换(conversion)或集成(integration)。机器学习优化是一个不断发展的领域,TensorFlow Lite 的模型优化工具包(Model Optimization Toolkit)随着新技术的发展而不断发展。
创建 TensorFlow Lite 模型
有如下两种方式创建lite模型:
- 创建 TensorFlow Lite 模型:使用 TensorFlow Lite Model Maker,利用您自己的自定义数据集创建模型。默认情况下,所有模型都包含元数据。
- 将 TensorFlow 模型转换为 TensorFlow Lite 模型:使用 TensorFlow Lite Converter 将 TensorFlow 模型转换为 TensorFlow Lite 模型。在转换过程中,您可以应用量化等优化措施,以缩减模型大小和缩短延时,并最大限度降低或完全避免准确率损失。默认情况下,所有模型都不含元数据。
tensorflow lite组件
- TensorFlow Lite 转换器(TensorFlow Lite Converter):是一个将训练好的 TensorFlow 模型转换成 TensorFlow Lite 格式的工具。转换模型减小了模型文件大小,并引入了不影响准确性(accuracy)的优化措施(optimizations)
2. TensorFlow Lite 解释器是一个库,该库会接收模型文件,执行它对输入数据定义的运算,并提供对输出的访问。
该解释器(interpreter)适用于多个平台,提供了一个简单的 API,用于从 Java、Swift、Objective-C、C++ 和 Python 运行 TensorFlow Lite 模型。
以下代码展示了从 Java 调用的解释器:
try (Interpreter interpreter = new Interpreter(tensorflow_lite_model_file)) { interpreter.run(input, output);
3.由于 TensorFlow Lite 内置算子库仅支持有限数量的 TensorFlow 算子,所以并非所有模型都可以转换。大多数 TensorFlow Lite 运算都针对的是浮点(float32
)和量化(uint8
、int8
)推断。
4.Delegates 利用GPU和Digital Signal Processor (DSP)等设备加速器,实现TensorFlow Lite模型的硬件加速。
默认情况下,TensorFlow Lite使用针对ARM Neon指令集优化的CPU内核。
模型优化
- 量化的工作原理是降低用于表示模型参数的数字(默认情况为 32 位浮点数)的精度。这样可以获得较小的模型大小和较快的计算速度。
2.剪枝
剪枝的工作原理是移除模型中对其预测影响很小的参数。剪枝后的模型在磁盘上的大小相同,并且具有相同的运行时延迟,但可以更高效地压缩。这使剪枝成为缩减模型下载大小的实用技术。
3.聚类
聚类的工作原理是将模型中每一层的权重归入预定数量的聚类中,然后共享属于每个单独聚类的权重的质心值。这就减少了模型中唯一权重值的数量,从而降低了其复杂性。
参考
参考:官网TensorFlow Lite | TensorFlow中文官网