TensorFlow Lite 是 TensorFlow 在移动和 IoT 等边缘设备端的解决方案,提供了 Java、Python 和 C++ API 库,可以运行在 Android、iOS 和 Raspberry Pi 等设备上 。目前 TFLite 只提供了推理功能,在服务器端进行训练后,经过如下简单处理即可部署到边缘设备上 。
个人使用总结:
- 如果我们只使用Tensorflow的高级API搭建模型 , 那么将TF转TF Lite再转TF lite micro的过程会相对顺利 。但是如果我们的模型使用了自定义模块,那么转换过程会遇到很多麻烦,Tensorflow对自家高级API的转换提供了很好的支持,但对我们自己写的一些NN 算子支持不佳 。
- Tensorflow LSTM的流式部署是有难度的 , 请使用最新的Tensorflow版本,将unrool打开,再尝试
- python_api" rel="external nofollow noreferrer">Python API(推荐 , 且本文主讲):它让您可以更轻松地在模型开发流水线中转换模型、应用优化、添加元数据,并且拥有更多功能 。
- 命令行:它仅支持基本模型转换 。
1、python/tf/lite/TFLiteConverter?hl=zh-cn#from_saved_model" rel="external nofollow noreferrer">tf.lite.TFLiteConverter.from_saved_model()(推荐):转换 SavedModel
文章插图
文章插图
import tensorflow as tf# 转换模型converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir) # SavedModel目录的路径tflite_model = converter.convert()# 保存TF Lite模型with open('model.tflite', 'wb') as f: f.write(tflite_model)2、python/tf/lite/TFLiteConverter?hl=zh-cn#from_keras_model" rel="external nofollow noreferrer">tf.lite.TFLiteConverter.from_keras_model():转换 Keras 模型
文章插图
文章插图
import tensorflow as tf# 使用高级API tf.keras.* 创建一个模型model = tf.keras.models.Sequential([ tf.keras.layers.Dense(units=1, input_shape=[1]), tf.keras.layers.Dense(units=16, activation='relu'), tf.keras.layers.Dense(units=1)])model.compile(optimizer='sgd', loss='mean_squared_error') # 编译模型model.fit(x=[-1, 0, 1], y=[-3, -1, 1], epochs=5) # 训练模型# 生成一个 SavedModel# tf.saved_model.save(model, "saved_model_keras_dir")# keras model to TFLiteconverter = tf.lite.TFLiteConverter.from_keras_model(model)tflite_model = converter.convert()# 保存模型with open('model.tflite', 'wb') as f: f.write(tflite_model)3、python/tf/lite/TFLiteConverter?hl=zh-cn#from_concrete_functions" rel="external nofollow noreferrer">tf.lite.TFLiteConverter.from_concrete_functions():转换 具体函数
文章插图
文章插图
import tensorflow as tf# 使用低级API tf.* 创建一个模型class Squared(tf.Module): @tf.function(input_signature=[tf.TensorSpec(shape=[None], dtype=tf.float32)]) def __call__(self, x): return tf.square(x)model = Squared()# 运行模型# result = Squared(5.0) # 25.0# 生成 SavedModel# tf.saved_model.save(model, "saved_model_tf_dir")concrete_func = model.__call__.get_concrete_function()# TF model to TFLite# 注意,对于TensorFlow 2.7之前的版本,# from_concrete_functions API能够在只有第一个参数的情况下工作:# > converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func], model)tflite_model = converter.convert()# 保存TFLite模型with open('model.tflite', 'wb') as f: f.write(tflite_model)
推荐阅读
- 请问去未知暗殿怎么走(复古未知暗殿从哪里进图解)
- 神州风闻录最新侍从强度排行是怎么样的
- iphone13几个摄像头_iphone13四个摄像头吗
- DevOps|从特拉斯辞职风波到研发效能中的不靠谱人干的荒唐事
- iqoo9参数详细_iqoo9参数配置
- 小米11 Lite参数配置_小米11 Lite参数详情
- 花心男人面相,可以从3个方面进行分析,助力快速了解
- 宝宝耳朵面相怎么看,可以从这4个方面来看
- fps值太低怎么办(fps从100多突然变低到10几)
- fps太低怎么办(fps从100多突然变低到10几)