在 TensorFlow.org 上查看 | 在 Google Colab 中运行 | 在 GitHub 上查看源代码 | 下载笔记本 |
TensorFlow Lite 模型分析器 API 可帮助您通过列出模型的结构来分析 TensorFlow Lite 格式的模型。
模型分析器 API
TensorFlow Lite 模型分析器提供以下 API。
tf.lite.experimental.Analyzer.analyze(model_path=None,
model_content=None,
gpu_compatibility=False)
您可以从 https://tensorflowcn.cn/api_docs/python/tf/lite/experimental/Analyzer 找到 API 详细信息,或从 Python 终端运行 help(tf.lite.experimental.Analyzer.analyze)
。
使用简单 Keras 模型的基本用法
以下代码展示了模型分析器的基本用法。它显示了 TFLite 模型内容中转换后的 Keras 模型的内容,格式化为一个 flatbuffer 对象。
import tensorflow as tf
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(128, 128)),
tf.keras.layers.Dense(256, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10)
])
fb_model = tf.lite.TFLiteConverter.from_keras_model(model).convert()
tf.lite.experimental.Analyzer.analyze(model_content=fb_model)
使用 MobileNetV3Large Keras 模型的基本用法
此 API 可与 MobileNetV3Large 等大型模型一起使用。由于输出很大,您可能希望使用您喜欢的文本编辑器浏览它。
model = tf.keras.applications.MobileNetV3Large()
fb_model = tf.lite.TFLiteConverter.from_keras_model(model).convert()
tf.lite.experimental.Analyzer.analyze(model_content=fb_model)
检查 GPU 代理兼容性
ModelAnalyzer API 提供了一种方法,可以通过提供 gpu_compatibility=True
选项来检查给定模型的 GPU 代理 兼容性。
情况 1:模型不兼容
以下代码展示了如何使用 gpu_compatibility=True
选项来处理使用 tf.slice
(使用二维张量)和 tf.cosh
(与 GPU 代理不兼容)的简单 tf.function。
您将看到每个具有兼容性问题(或问题)的节点的 GPU COMPATIBILITY WARNING
。
import tensorflow as tf
@tf.function(input_signature=[
tf.TensorSpec(shape=[4, 4], dtype=tf.float32)
])
def func(x):
return tf.cosh(x) + tf.slice(x, [1, 1], [1, 1])
converter = tf.lite.TFLiteConverter.from_concrete_functions(
[func.get_concrete_function()], func)
converter.target_spec.supported_ops = [
tf.lite.OpsSet.TFLITE_BUILTINS,
tf.lite.OpsSet.SELECT_TF_OPS,
]
fb_model = converter.convert()
tf.lite.experimental.Analyzer.analyze(model_content=fb_model, gpu_compatibility=True)
情况 2:模型兼容
在此示例中,给定模型与 GPU 代理兼容。
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(128, 128)),
tf.keras.layers.Dense(256, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10)
])
fb_model = tf.lite.TFLiteConverter.from_keras_model(model).convert()
tf.lite.experimental.Analyzer.analyze(model_content=fb_model, gpu_compatibility=True)