【TensorFlow 精简版】TensorFlow Lite

目录

一 TensorFlow Lite简介

二 开发

三 开始使用


一 TensorFlow Lite简介

TensorFlow Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 loT 设备上运行模型,以便实现设备端机器学习。

  • 针对设备端的机器学习进行的优化:

延时(数据无需往返服务器);

隐私(没有任何个人数据离开设备);

连接性(无需连接互联网);

大小(缩减了模型和二进制文件的大小);

功耗(高效推断,且无需网络连接)。

  • 支持多种平台,涵盖Android 和 IOS设备、嵌入式Linux 和微控制器。
  • 支持多种语言,包括 Java、Swift、Objective-C、C++ 和 Python。
  • 高性能,支持硬件的加速和优化模型。
  • 提供多种平台上的常见机器学习任务的端到端范例(图像分类、目标检测、姿势估计、问题回答、文本分类等)

二 开发

TensorFlow Lite 可在计算和内存资源有限的设备上高效地运行,原因是可缩减大小(代码占用的空间较小)以及提高推断的速度(可直接访问数据,无需执行额外的解析/解压缩步骤)等。

1 创建TensorFlow Lite模型

可以通过以下的方式生成 TensorFlow Lite 模型:

 使用现有的 TensorFlow Lite 模型

模型可能包含元数据,也可能不含元数据。

TensorFlow Lite 元数据为模型描述提供了标准元数据是与模型功能及其输入/输出信息有关的重要信息来源。具有元数据格式的模型如下图所示:

 创建 TensorFlow Lite 模型

使用 TensorFlow Lite Model Maker,利用自定义数据集创建模型。

默认情况下,所有模型都包含元数据

 将 TensorFlow 模型转换为 TensorFlow Lite 模型

可以使用 TensorFlow Lite Converter 将 TensorFlow 模型转换为 TensorFlow Lite 模型。

在转换的过程中,还可以应用量化等优化措施,以缩减模型的大小和缩短延时,并最大限度降低或避免准确率的损失。默认情况下,所有模型都不含元数据

2 推理(推断)

TensorFlow Lite 模型在设备上的执行,即预测的过程。

可以通过以下方式运行推断,具体取决于模型类型:

 不含元数据的模型

使用 TensorFlow Lite Interpreter API即可。

在多种平台和语言中均受支持。

 包含元数据的模型

使用 TensorFlow Lite Task 库以利用开箱即用的 API,也可以使用 TensorFlow Lite Support 库构建自定义的推断流水线。

开始使用

根据目标设备的不同,可以参考不同的指南。

① 使用 Python 快速入门:基于 Linux 的设备

如果需要使用Python执行TensorFlow Lite模型,可以仅安装TensorFlow Lite解释器(将这种简化的Python软件包称为tflite_runtime),无需安装所有TensorFlow软件包。如果只想执行.tflite模型并且避免因使用大型TensorFlow库而浪费磁盘空间的时候,小型软件包(tflite_runtime 软件包)是首选。

如果是需要访问其他 Python API(例如 TensorFlow Lite Converter)的时候,则必须安装完整的 TensorFlow 软件包

tflite_runtime 软件包是整个tensorflow软件包的小部分,并且包括使用 TensorFlow Lite运行推断所需的最少代码(主要是 Interpreter Python类)。

② 安装tflite-runtime

python3 -m pip install tflite-runtime

③ 使用tflite-runtime进行推理

import tensorflow as tfinterpreter = tf.lite.Interpreter(model_path=args.model_file)

或者

import tflite_runtime.interpreter as tfliteinterpreter = tflite.Interpreter(model_path=args.model_file)

模型转换成tflie可参考:模型转换

  •  完整的推理代码
import numpy as np
import tensorflow as tf
# Load the TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path="ResNet50_fp32.tflite")
interpreter.allocate_tensors()
# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
# Test the model on random input data.
input_shape = input_details[0]['shape']
input_data = np.array(np.random.random_sample(input_shape), dtype=np.float32)
interpreter.set_tensor(input_details[0]['index'], input_data)
interpreter.invoke()
# The function `get_tensor()` returns a copy of the tensor data.
# Use `tensor()` in order to get a pointer to the tensor.
output_data = interpreter.get_tensor(output_details[0]['index'])
print(output_data.shape)
print(output_data[0][0])
print(output_data[0][999])
pass
  • 运行程序的输出
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
(1, 1000)
0.00015664824
0.0007171879

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/581337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle下载

前言: 官网上提供都是最新的什么19c 21c这些版本,我要的是 11g 12c 或者更老的 8i 9i 这些版本。 准备下载一个oracle12c 版本,但是找了很久,最终…详情请看下面 oracle 数据库版本介绍 Oracle数据库有多个长期支持版本&#x…

格密码基础:子格,q-ary垂直格与线性代数

目录 一.写在前面 二.子空间垂直 2.1 理论解释 2.2 举例分析 三. 零空间 3.1 零空间与q-ary垂直格 3.2 零空间与行/列空间 四. 格密码相关 一.写在前面 格密码中的很多基础原语都来自于线性代数的基本概念,比如举几个例子: 格密码中的非满秩格…

2022年全球软件质量效能大会(QECon上海站)-核心PPT资料下载

一、峰会简介 近年来,以云计算、移动互联网、物联网、工业互联网、人工智能、大数据及区块链等新一代信息技术构建的智能化应用和产品出现爆发式增长,突破了对于软件形态的传统认知,正以各种展现方式诠释着对新型智能软件的定义。这也使得对…

❀My小学习之排序算法❀

目录 排序算法(Sorting algorithm):) 一、定义 二、分类 三、评价标准 排序算法(Sorting algorithm):) 一、定义 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的…

docker学习(十九、network使用示例bridge)

文章目录 一、容器网络分配情况1.启动容器2.查看容器的network3.容器网络分配 二、bridge1.bridge详细介绍2.实践bridge两两匹配3.创建network,默认bridge network相关内容: docker学习(十八、network介绍) docker学习&#xff08…

一.windows2012搭建fpt服务器和常见端口介绍

一.windows2012搭建fpt服务器和常见端口介绍 1.打开防火墙2.创建组2.1打开计算机管理2.2创建组并且设置名称和描述 3.创建用户3.1设置用户密码和名称3.2把用户归属于组3.3把user删除掉3.4点击添加然后点高级3.5点击立即查找选择之前设定的组 4.安装ftp服务器4.1点击添加角色和功…

仓储革新:AR技术引领物流进入智慧时代

根据《2022年中国物流行业研究:深度探析行业现状(智能设备及智能软件)》,报告中提及:“中国社会物流总额依然保持着较为良好的增长态势,年增速已恢复至常年平均水平。2021年社会物流总额细分中工业物流总额…

千巡翼X4轻型无人机 赋能智慧矿山

千巡翼X4轻型无人机 赋能智慧矿山 传统的矿山测绘需要大量测绘员通过采用手持RTK、全站仪对被测区域进行外业工作,再通过方格网法、三角网法、断面法等进行计算,需要耗费大量人力和时间。随着无人机航测技术的不断发展,利用无人机作业可以大…

javaEE -18(11000字 JavaScript入门 - 3)

一:事件 (高级) 1.1 注册事件(绑定事件) 给元素添加事件,称为注册事件或者绑定事件,注册事件有两种方式:传统方式和方法监听注册方式 传统注册方式 : 利用 on 开头的…

20231227在Firefly的AIO-3399J开发板的Android11的挖掘机的DTS配置单后摄像头ov13850

20231227在Firefly的AIO-3399J开发板的Android11的挖掘机的DTS配置单后摄像头ov13850 2023/12/27 18:40 1、简略步骤: rootrootrootroot-X99-Turbo:~/3TB$ cat Android11.0.tar.bz2.a* > Android11.0.tar.bz2 rootrootrootroot-X99-Turbo:~/3TB$ tar jxvf Androi…

Find My化妆包|苹果Find My技术与化妆包结合,智能防丢,全球定位

化妆包顾名思义,那就是装载、收纳化妆品的包包,从而方便妹子可以随时随地取用。化妆包可以说是内有乾坤,比如睫毛膏、唇彩、粉饼、眉笔、防晒霜、吸油纸等等。按功能分为多功能型专业化妆包,旅游用简约型化妆包和家用小化妆包。按…

组织框架概念澄清及表设计

组织 企业组织 企业组织就是企业正式编制,以单独的编制,是个人在企业所在的长久的家,类似于所说的考编,在企业体制内的位置,可能一个人在组织有不同的岗位,也可能有不同的项目组,但是&#xf…

21.仿简道云公式函数实战-数学函数-COS

1. COS函数 COS 函数可用于计算角度的余弦值,返回 -1 到 1 之间的数值。 2. 函数用法 COS(弧度) 3. 函数示例 如计算 COS(60) 的值,可设置公式为COS(RADIANS(60)),返回 0.5。 4. 代码实战 首先我们在function包下创建math包&#xff0…

被他人错误解析域名到雷池 WAF网关的处理办法

作者:田逸 最近一些项目的站点经常发告警短信,提示网站无法访问。通过排查,发现后端数据库资源都被耗尽(连接数上千,正常情况是小于100),负载也高得吓人,如下图所示。 “load averag…

照着这几步做,轻松搭建企业知识库

在当今信息爆炸的时代,企业面临着海量的知识和信息。如何高效地管理和利用这些知识成为了企业发展的关键。而搭建一个适合企业的知识库,可以帮助企业更好地组织和共享知识,提高工作效率和竞争力。下面将为大家介绍一些简单的步骤,…

Xshell 从github克隆项目:使用ssh方式。

接上文: https://blog.csdn.net/liu834189447/article/details/135247868 是能克隆项目了,但是速度太磕碜了,磕碜到难以直视。 找到另外一种办法,使用SSH克隆项目 速度嘎嘎猛。 首先得能进得去github网站,不能点上边…

Centos7:Jenkins+gitlab+node项目启动(1)

Centos7:Jenkinsgitlabnode项目启动(1) Centos7:Jenkinsgitlabnode项目启动(1)-CSDN博客 Centos7:Jenkinsgitlabnode项目启动(2) Centos7:Jenkinsgitlabnode项目启动(2)-CSDN博客 Centos7:Jenkinsgitlabnode项目启…

uni-app/vue封装etc车牌照输入,获取键盘按键键值

先看下效果如下&#xff1a; 动态图如下 uniapp的keyup获取不到keyCode和compositionstart&#xff0c;compositionend&#xff0c;所以需要监听input节点的keyup事件&#xff0c; 思路以及代码如下&#xff1a; 1.将每一个字符用文本框输入&#xff0c;代码如下 <view …

TCP的三次握手

TCP 是一种面向连接的单播协议&#xff0c;在发送数据前&#xff0c;通信双方必须在彼此间建立一条连接。所谓的“连接”&#xff0c;其实是客户端和服务器的内存里保存的一份关于对方的信息&#xff0c;如 IP 地址、端口号等。 TCP 可以看成是一种字节流&#xff0c;它…

反序列化漏洞分析

接着昨天的来说&#xff0c;由于fastjson调试起来过程比较复杂&#xff0c;在这里直接看关键点&#xff1a;首先会获取字符串的第一对引号中的内容 如果内容为type就会加载下一对引号中的类 在JavaBeanInfo.class中会获取类中所有详细详细 在这里匹配以set开头的方法 methodNam…