转换RNN模型为TFLite由于 TensorFlow 中 RNN API 的变体很多,我们的转换方式包括两个方面:
- 为标准 TensorFlow RNN API(如 Keras LSTM)提供原生支持 。这是推荐的选项 。
- 提供 进入转换基础架构的接口,用于 插入用户定义的 RNN 实现并转换为 TensorFlow Lite 。我们提供了几个有关此类转换的开箱即用的示例 , 这些示例使用的是 lingvo 的 LSTMCellSimple和 LayerNormalizedLSTMCellSimpleRNN 接口 。
运行推理TensorFlow Lite 推理通常遵循以下步骤:
- 加载模型
- 转换数据
- 运行推断
- 解释输出
文章插图
文章插图
# -*- coding:utf-8 -*-# Author:凌逆战 | Never# Date: 2022/10/12""""""import tensorflow as tfclass TestModel(tf.Module): def __init__(self): super(TestModel, self).__init__() @tf.function(input_signature=[tf.TensorSpec(shape=[1, 10], dtype=tf.float32)]) def add(self, x): # 为方便起见,将输出命名为“result” 。 return {'result': x + 4}saved_model_path = './saved_models'tflite_path = 'content/test_variable.tflite'# 保存模型model = TestModel()# 您可以省略signatures参数 , 并且将创建一个名为'serving_default'的默认签名名 。tf.saved_model.save(model, saved_model_path, signatures={'my_signature': model.add.get_concrete_function()})# TF Model to TFLiteconverter = tf.lite.TFLiteConverter.from_saved_model(saved_model_path)tflite_model = converter.convert()with open(tflite_path, 'wb') as f: f.write(tflite_model)# 加载TFLite模型interpreter = tf.lite.Interpreter(tflite_path)# 模型中只定义了一个签名,因此默认情况下它将返回签名# 如果有多个签名 , 我们就可以传递这个名字my_signature = interpreter.get_signature_runner()# my_signature 可以通过输入作为参数调用output = my_signature(x=tf.constant([1.0], shape=(1, 10), dtype=tf.float32))# 'output'是包含推理所有输出的字典,在本例中,我们只有一个输出'result' 。print(output['result'])优化模型Tensorflow Lite 和 Tensorflow Model Optimization Toolkit (Tensorflow模型优化工具包)提供了最小优化推理复杂性的工具,可将优化推断的复杂性降至最低 。深度神经网络的量化使用了一些技术,这些技术可以降低权重的精确表示,并且降低存储和计算 。 TensorFlow Model Optimization Toolkit 目前支持通过量化、剪枝和聚类进行优化 。
【Tensorflow Lite从入门到精通】剪枝:剪枝的工作原理是移除模型中对其预测影响很小的参数 。剪枝后的模型在磁盘上的大小相同,并且具有相同的运行时延迟 , 但可以更高效地压缩 。这使剪枝成为缩减模型下载大小的实用技术 。
推荐阅读
- 请问去未知暗殿怎么走(复古未知暗殿从哪里进图解)
- 神州风闻录最新侍从强度排行是怎么样的
- iphone13几个摄像头_iphone13四个摄像头吗
- DevOps|从特拉斯辞职风波到研发效能中的不靠谱人干的荒唐事
- iqoo9参数详细_iqoo9参数配置
- 小米11 Lite参数配置_小米11 Lite参数详情
- 花心男人面相,可以从3个方面进行分析,助力快速了解
- 宝宝耳朵面相怎么看,可以从这4个方面来看
- fps值太低怎么办(fps从100多突然变低到10几)
- fps太低怎么办(fps从100多突然变低到10几)