当前位置: 首页 > news >正文

tensorflow lite简介-移动设备端机器学习

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组件

  1. 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)和量化(uint8int8)推断。

        4.Delegates 利用GPU和Digital Signal Processor (DSP)等设备加速器,实现TensorFlow Lite模型的硬件加速

默认情况下,TensorFlow Lite使用针对ARM Neon指令集优化的CPU内核。

模型优化

  1. 量化的工作原理是降低用于表示模型参数的数字(默认情况为 32 位浮点数)的精度。这样可以获得较小的模型大小和较快的计算速度。

2.剪枝

剪枝的工作原理是移除模型中对其预测影响很小的参数。剪枝后的模型在磁盘上的大小相同,并且具有相同的运行时延迟,但可以更高效地压缩。这使剪枝成为缩减模型下载大小的实用技术。

3.聚类

聚类的工作原理是将模型中每一层的权重归入预定数量的聚类中,然后共享属于每个单独聚类的权重的质心值。这就减少了模型中唯一权重值的数量,从而降低了其复杂性。

参考

参考:官网TensorFlow Lite | TensorFlow中文官网

http://www.lryc.cn/news/27868.html

相关文章:

  • Node.js常用知识
  • 踩坑:maven打包失败的解决方式总结
  • 【C++】位图
  • 蓝桥杯-考勤刷卡
  • 如何利用站内推广和站外推广提高转化率?
  • Java多线程(三)——线程池及定时器
  • Linux命令行安装Oracle19c教程和踩坑经验
  • Linux常用命令等
  • CEC2014:鱼鹰优化算法(Osprey optimization algorithm,OOA)求解CEC2014(提供MATLAB代码
  • MyBatis底层原理【源码运行时序图】
  • k8s 系列之 CoreDNS 解读
  • 从测试鸡蛋硬度到跳表的设计
  • 3D立体视觉成像原理介绍【一 】
  • CEC2021:鱼鹰优化算法(Osprey optimization algorithm,OOA)求解CEC2021(提供MATLAB代码
  • 0301_对应的南京比特物联网
  • 钡铼技术BL302 ARM工控机QT图形化界面开发的实践
  • Python try except异常处理详解(入门必读)
  • 信息系统基本知识(三)软件工程
  • Linux下软件部署安装管理----rpmbuild打包rpm包部署安装
  • ThreadLocal学会了这些,你也能和面试官扯皮了!
  • 【存储】存储特性
  • Qt使用OpenGL进行多线程离屏渲染
  • Vue基础入门讲义(三)-指令
  • pod资源限制,探针(健康检查)
  • Python | 蓝桥杯进阶第一卷——字符串
  • 2023-03-03 mysql列存储-cpu占用100%-追踪思路
  • JVM—类加载子系统
  • 在codeIgniter3中session.php中的数组追加值
  • Windows环境下Gpu版本的Pytorch安装
  • 项目实战典型案例13——学情页面逻辑问题