Path: blob/master/site/zh-cn/lite/guide/signatures.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
TensorFlow Lite 中的签名
TensorFlow Lite 支持将 TensorFlow 模型的输入/输出规范转换为 TensorFlow Lite 模型。输入/输出规范称为“签名”。可以在构建 SavedModel 或创建具体函数时指定签名。
TensorFlow Lite 中的签名提供以下功能:
它们根据 TensorFlow 模型的签名指定转换后的 TensorFlow Lite 模型的输入和输出。
允许单个 TensorFlow Lite 模型支持多个入口点。
签名由三部分组成:
输入:从签名中的输入名称到输入张量的输入映射。
输出:从签名中的输出名称映射到输出张量的输出映射。
签名键: 标识计算图入口点的名称。
安装
示例模型
假设我们有两个任务(例如编码和解码)作为 TensorFlow 模型:
就签名而言,上面的 TensorFlow 模型可以总结如下:
签名
键:编码
输入:{"x"}
输出:{"encoded_result"}
签名
键:解码
输入:{"x"}
输出:{"decoded_result"}
转换带有签名的模型
TensorFlow Lite Converter API 会将上述签名信息带入转换后的 TensorFlow Lite 模型。
从 TensorFlow 2.7.0 版开始,所有 Converter API 都提供此转换功能。请参阅示例用法。
从保存的模型
从 Keras 模型
从具体函数
运行签名
TensorFlow 推断 API 支持基于签名的执行:
通过输入和输出的名称(由签名指定)访问输入/输出张量。
分别运行由签名键标识的计算图的每个入口点。
支持 SavedModel 的初始化过程。
Java、C++ 和 Python 语言绑定目前可用。请参阅以下各部分的示例。
Java
C++
Python
已知问题/限制
由于 TFLite 解释器不能保证线程安全,所以来自同一解释器的签名运行程序不会被并发执行。
目前尚不支持 C/iOS/Swift。
更新
版本 2.7
实现了多重签名功能。
版本 2 中的所有 Converter API 都会生成启用签名的 TensorFlow Lite 模型。
版本 2.5
签名功能通过
from_saved_model
Converter API 提供。