第一期,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 或者其它语言的代码,方便装载、保存和使用数据。
with tf.Session() as sess: tflite_model = tf.contrib.lite.toco_convert(sess.graph_def, [img], [out]) open("converted_model.tflite","wb").write(tflite_model)