Path: blob/master/site/zh-cn/guide/migrate/tflite.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
将您的 TFLite 代码迁移到 TF2
TensorFlow Lite (TFLite) 是一套工具,可帮助开发者在设备端(移动、嵌入式和物联网设备)上运行机器学习推断。TFLite 转换器可以将现有 TF 模型转换为可在设备端高效运行的优化 TFLite 模型格式。
在本文档中,您将了解需要对 TF 到 TFLite 的转换代码进行哪些更改,然后是几个实现相同目标的示例。
TF 到 TFLite 转换代码的更改
如果您使用的是旧版 TF1 模型格式(例如,Keras 文件、冻结的 GraphDef、检查点、tf.Session 等),请将其更新为 TF1/TF2 SavedModel,并使用 TF2 转换器 API
tf.lite.TFLiteConverter.from_saved_model(...)
将其转换为 TFLite 模型(请参见表 1)。更新转换器 API 标志(请参见表 2)。
移除旧版 API,例如
tf.lite.constants
。(例如:将tf.lite.constants.INT8
替换为tf.int8
)
// 表 1 // TFLite Python 转换器 API 更新
TF1 API | TF2 API |
---|---|
tf.lite.TFLiteConverter.from_saved_model('saved_model/',..) | 支持 |
tf.lite.TFLiteConverter.from_keras_model_file('model.h5',..) | 已移除(更新为 SavedModel 格式) |
tf.lite.TFLiteConverter.from_frozen_graph('model.pb',..) | 已移除(更新为 SavedModel 格式) |
tf.lite.TFLiteConverter.from_session(sess,...) | 已移除(更新为 SavedModel 格式) |
<style> .table {margin-left: 0 !important;} </style>
// 表 2 // TFLite Python 转换器 API 标志更新
TF1 API | TF2 API |
---|---|
allow_custom_ops optimizations representative_dataset target_spec inference_input_type inference_output_type experimental_new_converter experimental_new_quantizer | 支持 |
input_tensors output_tensors input_arrays_with_shape output_arrays experimental_debug_info_func | 已移除(不支持的转换器 API 参数) |
change_concat_input_ranges default_ranges_stats get_input_arrays() inference_type quantized_input_stats reorder_across_fake_quant | 已移除(不支持的量化工作流) |
conversion_summary_dir dump_graphviz_dir dump_graphviz_video | 已移除(改为使用 Netron 或 visualize.py 呈现模型) |
output_format drop_control_dependency | 已移除(TF2 中不支持的功能) |
示例
您现在将演练一些示例,将旧版 TF1 模型转换为 TF1/TF2 SavedModel,然后将其转换为 TF2 TFLite 模型。
安装
从必要的 TensorFlow 导入开始。
创建所有必要的 TF1 模型格式。
1. 将 TF1 SavedModel 转换为 TFLite 模型
之前:使用 TF1 进行转换
下面是 TF1 样式 TFlite 转换的典型代码。
之后:使用 TF2 进行转换
将 TF1 SavedModel 直接转换为 TFLite 模型,并设置较小的 v2 转换器标志。
2. 将 TF1 Keras 模型文件转换为 TFLite 模型
之前:使用 TF1 进行转换
下面是 TF1 样式 TFlite 转换的典型代码。
之后:使用 TF2 进行转换
首先,将 TF1 Keras 模型文件转换为 TF2 SavedModel,然后将其转换为 TFLite 模型,并设置较小的 v2 转换器标志。
3. 将 TF1 冻结的 GraphDef 转换为 TFLite 模型
之前:使用 TF1 进行转换
下面是 TF1 样式 TFlite 转换的典型代码。
之后:使用 TF2 进行转换
首先,将 TF1 冻结的 GraphDef 转换为 TF1 SavedModel,然后将其转换为 TFLite 模型,并设置较小的 v2 转换器标志。
延伸阅读
请参阅 TFLite 指南来详细了解工作流和最新功能。
如果您使用的是 TF1 代码或旧版 TF1 模型格式(Keras
.h5
文件、冻结的 GraphDef.pb
等),请更新您的代码并将您的模型迁移到 TF2 SavedModel 格式。