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,则需要确保它运行在受支持的设备上。

协议缓冲区(ProtoBuff)

正是由于TensorFlow Lite运行在客户端本地,开发者必须要在桌面设备上提前训练好一个模型。各种类型的数据都需要使用ProtoBuff 来定义数据结构,有了这些ProtoBuff代码,你就可以使用工具来生成对应的C和Python或者其他语言的代码,方便装载,保存和使用数据。

ProtoBuff 目前支持Java,Python,Objective-C和C ++来生成代码。您还可以使用Go,Ruby和C#,并使用更多语言。

并且为了实现模型的导入,还需要认识一些其他类型的文件,比如:图形定义,检查点以及冻结图。

图形定义

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

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

节点{
  名称:“b”
  op:“matmul”
  输入:“a:0”
}

节点{
  名称:“c”
  op:“matmul”
  输入:“a:0”
  输出:“b:0”
}


检查站

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

冷冻图

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

TensorFlow Lite模型

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

使用tf.Session()作为sess:
  tflite_model = tf.contrib.lite.toco_convert(sess.graph_def,[img],[out])
  开放( “converted_model.tflite”, “WB”)。写(tflite_model)

在TensorFlow Lite中兼容的模型是Inception v3和MobileNets。

  • Inception v3主要用于验证ImageNet数据集,这是一个被学界广泛认定为图片验证指标的数据集。
  • MobileNets则是转为移动设备而设计的模型,具有低能耗的特征,但相应的缺点就是准确度不如初始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://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值