TensorFlow Lite 概述和模型转化简介

今年三月底,我们在 YouTube 上开通了 TensorFlow 视频频道,今天,我们为大家带来 TensorFlow 频道「Coding TensorFlow 系列」的中文演讲视频,这个系列将会带领大家一起做有关机器学习的编程,并使用 TensorFlow 实现 AI。

我们将于本周一、三、五更新「Coding TensorFlow 系列」的前三个中文视频,并将在 TensorFlow 微信公众号(ID: tensorflowers)首发,欢迎转发和关注!

第一期,Google 的工程师 Yizhen Fu 为你带来 TensorFlow Lite 的概述和模型转化简介,以及使用过程中会接触到的一些概念、术语和资源类型等:

 

TensorFlow Lite 介绍

首先我们要明确,TensorFlow Lite 的目标是移动和嵌入式设备,它赋予了这些设备在终端本地运行机器学习模型的能力,从而不再需要向云端服务器发送数据。这样一来,不但节省了网络流量、减少了时间开销,而且还充分帮助用户保护自己的隐私和敏感信息。

 

Android 和 iOS 设备上,TensorFlow Lite 都提供了 C++ API 的支持,并且在 Android 平台还额外提供了 Java API 的支持。这样一来,开发者就能非常方便得使用这些 TensorFlow Lite API 进行设计和开发。不过,默认情况下 TensorFlow Lite 使用的是 CPU 来进行解算,如果你需要使用 Android 8.1 推出的硬件加速 API,则需要确保它运行在受支持的设备上。

模型相关的文件

正是由于 TensorFlow Lite 运行在客户端本地,开发者必须要在桌面设备上提前训练好一个模型。并且为了实现模型的导入,还需要认识一些其他类型的文件,比如:Graph Definition, Checkpoints 以及 Frozen Graph。各种类型的数据都需要使用 Protocol Buffers(简称 ProtoBuff)来定义数据结构,有了这些 ProtoBuff 代码,你就可以使用工具来生成对应的 C 和 Python 或者其它语言的代码,方便装载、保存和使用数据。

ProtoBuff 的相关内容,可以从这个网址得到:

https://developers.google.cn/protocol-buffers/

Graph Def

关于 Graph Def(Graph Definition)文件,有两种格式。拓展名为 .pb 的是二进制 binary 文件;而 .pbtxt 格式的则是更具可读性的文本文件。但是,实际使用中,二进制文件有着相当高的执行效率和内存优势。

Graph Def 是你训练的模型的核心,它定义了 node 的关系结构,方便由其他的进程来读取。比如下面这个 Graph Def 就定义了“矩阵A与矩阵B相乘得到矩阵C”的描述。

Checkpoint

Checkpoint 文件是来自 TensorFlow 图的序列化变量。这个文件当中没有图的结构,所以不会被解释。在训练学习的过程中,Checkpoint 文件记录了不同的 Iteration 中变量的取值。

Frozen Graph

用 Graph Def 和 Checkpoint 生成 Frozen Graph 的过程叫做“冷冻”。为什么称之为冷冻呢?我们知道,生成 Frozen Graph 所需要的量都是从 Checkpoint 当中得到的,那么这个变量转为常量的过程就被形象地称之为“冷冻”了。

TensorFlow Lite 模型

TensorFlow Lite 所用的模型是使用 TOCO 工具从 TensorFlow 模型转化而来的,来源就是经过冷冻生成的 Frozen Graph。假如你已经得到了一个“够用”的模型了,而且你也没有源代码或者数据来重新进行训练,那么就使用当前的模型吧,没有任何问题。但如果你有源代码和数据,直接使用 TOCO 工具进行模型转化将会是最好的选择。示例代码如下:

TensorFlow Lite 兼容的公开模型

视频中提到的兼容性指南的链接为:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/g3doc/tf_ops_compatibility.md

在 TensorFlow Lite 中兼容的模型是 Inception v3 和 MobileNets,Inception v3 主要用于验证 ImageNet 数据集,这是一个被学界广泛认定为图片验证指标的数据集。MobileNets 则是转为移动设备而设计的模型,具有低能耗的特征,但相应的缺点就是准确度不如 Inception v3。

现在,开始试试看通过我们的 Codelabs 完成你的第一个 TensorFlow Lite 程序吧,链接:

第一部分,如何用 MobileNets 对图像分类:

https://codelabs.tensorflowers.cn/codelabs/tensorflow-for-poets/index.html

第二部分,如何将第一部分生成的模型构建成一个 APK:

https://codelabs.tensorflowers.cn/codelabs/tensorflow-for-poets-2/index.html

更多链接

我们将稍后在如下官方频道更新本系列视频:

谷歌开发者中文频道:

https://www.youtube.com/GoogleDevelopersChina

谷歌开发者 Youku 频道:

https://i.youku.com/GoogleDevelopers

Google 中国Bilibili频道:

https://space.bilibili.com/64169458/

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值