TinyML与Tensor Flow Lite的关系

TinyML是基于TensorFlowLite的一个专题,专注于在低功耗微控制器上实现机器学习。它提供了简化版的API和库,如micro_mutable_op_resolver和micro_interpreter,以适应资源有限的硬件。TinyML的目标是让开发者能够在微型设备上构建和运行预测模型,而不进行训练。此外,它还包括低功耗调试模块micro_error_reporter,以减少能耗。 TinyML社区提供了丰富的开源项目和资源,加速在超低功耗设备上的深度学习应用开发。
部署运行你感兴趣的模型镜像

目录

发展历史

简介

Tensor Flow Lite for Microcontrollers

主要模块


发展历史

Tensor Flow Lite是针对移动设备以及可穿戴设备领域的深度学习框架,是基于Tensor Flow的,但是Tensor Flow Lite并非能够在一些微型的MCU出色的运行,以及由于它算法的原因并不能很好的处于低功耗模式运行,如果一些芯片只能运行在低功耗的情况下,那么Tensor Flow Lite就显得不是那么融洽了,所以诞生了一个主题:TinyML,全拼:Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers(基于Arduino和超低功耗微控制器的TensorFlow Lite机器学习),并且拥有自己的社区,这个主题的中心思想是不在MCU上进行任何深度学习算法,仅仅只用预测算法,也就是大家训练好模型之后在MCU上运行并预测模型,无法在MCU上对模型进行订正以及训练,并且教大家如何训练一些足够小且精确高的一些模型,它分离了Tensor Flow Lite的大部分功能使其变得尽量简单,这个主题的发起者是:Pete Warden & Daniel Situnayake ,并且TinyML书也是他俩写的。

简介

TinyML是基于Tensor Flow Lite的一个主题,宗旨是让用户能够使用Tensor Flow Lite快速搭建在低功耗、微小的硬件环境下进行深度学习运算,可以理解为它是基于Tensor Flow Lite的解决方案,它提供了非常多的基于Tensor Flow Lite的开源项目,让大家能够基于这些项目快速构建自己的深度学习框架。

为了方便快速上手,TinyML写了许多自己的功能API,这些API基于Tensor Flow Lite,它们位于Tensor Flow Lite源代码的micro目录下,可以通过加载这个目录下的头文件进行快速构建深度学习框架

Tensor Flow Lite for Microcontrollers

TinyML是基于Tensor Flow Lite的,它所有的源代码以及API模块都存在于:tensor flow/lite/micro目录下,它是Tensor Flow仓库的一部分,是以C++方式提供接口,它扩展了许多方便并快速开发的一些API,可以供我们更快的建立模型开发。

主要模块

模块名

all_ops_resolver提供解释器运行模型时的所有运算算法,每次针对运算会拉取所有算法,然后选择一个合适的算法做运算,会耗费大量内存
micro_mutable_op_resolver提供解释器运行模型时的所有运算算法,每次拉取一个算法做运算,并非最合适的算法,浪费内存较小
micro_error_reporter专门用于低功耗的芯片输出调试信息的模块,比Tensor Flow Lite原生的reporter功耗低很多
micro_interpreter包含专门在低功耗芯片的上处理和运行模型的代码

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

### TinyML TensorFlow Lite 的结合使用 TinyML 是一种专注于资源受限设备上的机器学习技术,而 TensorFlow Lite 则是一个轻量级框架,专为嵌入式和物联网 (IoT) 设备设计。两者结合可以实现高效的边缘计算应用。 以下是关于如何将 TinyMLTensorFlow Lite 结合使用的教程概述以及一些示例代码: #### 使用 TensorFlow Lite 进行模型转换 为了在微控制器上部署模型,通常需要先训练一个标准的 TensorFlow 模型并将其转换为 `.tflite` 文件格式。此过程可以通过 `tf.lite.TFLiteConverter` 实现[^2]。 ```python import tensorflow as tf # 加载已保存的 Keras 模型 model = tf.keras.models.load_model('path_to_my_model.h5') # 创建 TFLite 转换器实例 converter = tf.lite.TFLiteConverter.from_keras_model(model) # 启用优化选项以减小文件大小 converter.optimizations = [tf.lite.Optimize.DEFAULT] # 将浮点运算量化到整数精度(可选) converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8] converter.inference_input_type = tf.int8 converter.inference_output_type = tf.int8 # 执行转换并将结果写入 .tflite 文件 tflite_model = converter.convert() with open('model.tflite', 'wb') as f: f.write(tflite_model) ``` #### 部署至微控制器 一旦获得了 `.tflite` 文件,则需进一步处理以便其能在目标硬件平台上运行。这一步骤可能涉及将二进制数据嵌入 C/C++ 源码中,并通过特定 SDK 编译链接成固件镜像[^3]。 下面展示了一个简单的 Arduino 环境下的推断调用片段: ```cpp #include "tensorflow/lite/micro/all_ops_resolver.h" #include "tensorflow/lite/micro/micro_interpreter.h" // 假设 model_data 已经被加载到了闪存区域 const tflite::Model* model = ::tflite::GetModel(model_data); if (!model->initialized()) { TF_LITE_REPORT_ERROR(error_reporter, "Failed to initialize the model"); } tflite::AllOpsResolver resolver; static tflite::MicroInterpreter interpreter( model, resolver, tensor_arena, kTensorArenaSize, error_reporter); TfLiteStatus allocate_status = interpreter.AllocateTensors(); if (allocate_status != kTfLiteOk) { TF_LITE_REPORT_ERROR(error_reporter, "Allocate tensors failed."); } ``` 以上展示了从模型创建到实际推理的基本流程。值得注意的是,在开发过程中还需要考虑内存管理、输入预处理及输出后处理等问题[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

17岁boy想当攻城狮

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值