当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.compat.v1.lite.TFLiteConverter用法及代码示例


将 TensorFlow 模型转换为 output_format

用法

tf.compat.v1.lite.TFLiteConverter(
    graph_def, input_tensors, output_tensors, input_arrays_with_shape=None,
    output_arrays=None, experimental_debug_info_func=None
)

参数

  • graph_def 冻结的 TensorFlow GraphDef。
  • input_tensors 输入张量列表。使用 foo.shapefoo.dtype 计算类型和形状。
  • output_tensors 输出张量列表(此处仅使用 .name)。
  • input_arrays_with_shape 表示输入张量名称的字符串元组和表示输入形状的整数列表(例如,[("foo":[1, 16, 16, 3])])。仅当图形无法加载到 TensorFlow 以及 input_tensorsoutput_tensors 为 None 时使用。 (默认无)
  • output_arrays 用于冻结图形的输出张量列表。仅当图形无法加载到 TensorFlow 以及 input_tensorsoutput_tensors 为 None 时使用。 (默认无)
  • experimental_debug_info_func 一个实验函数,用于从 graph_def 检索一组节点的图形调试信息。

抛出

  • ValueError 无效参数。

属性

  • optimizations 实验标志,可能会发生变化。要应用的优化集。例如 {tf.lite.Optimize.DEFAULT}。 (默认无,必须是无或一组类型的值 tf.lite.Optimize )
  • representative_dataset 用于整数量化的生成器函数,其中每个生成的样本具有与模型输入相同的顺序、类型和形状。通常,这是从训练或评估数据集中随机选择的数百个样本的一小部分,没有特定的顺序。这是一个可选属性,但对于完整整数量化是必需的,即,如果 tf.int8target_spec.supported_types 中唯一支持的类型。请参阅tf.lite.RepresentativeDataset。 (默认无)
  • target_spec 实验标志,可能会发生变化。目标设备的规格,包括支持的操作集、支持的类型和一组用户定义的 TensorFlow Lite 运行时所需的 TensorFlow 算子。请参阅tf.lite.TargetSpec
  • inference_type 数值数组的数据类型,不包括输入层。 (默认 tf.float32,必须在 {tf.float32, tf.int8, tf.uint8} 中)
  • inference_input_type 输入层中数值数组的数据类型。如果 inference_input_type 在 {tf.int8, tf.uint8} 中,则必须提供 quantized_input_stats。 (默认是分配给 inference_type 的值,必须在 {tf.float32, tf.int8, tf.uint8} 中)
  • inference_output_type 输出层中数值数组的数据类型。 (默认是分配给 inference_type 的值,必须在 {tf.float32, tf.int8, tf.uint8} 中)
  • quantized_input_stats 输入张量名称到浮点元组的映射,表示训练数据的均值和标准差。 (例如,{"foo":(0., 1.)})。如果 inference_input_type 是 tf.int8 或 tf.uint8,则为必需。 (默认无)
  • default_ranges_stats 整数元组 (min, max) 表示没有指定范围的所有数值数组的范围值。旨在通过"dummy quantization" 进行量化实验。 (默认无)
  • allow_custom_ops 指示是否允许自定义操作的布尔值。当为 False 时,任何未知操作都是错误。当为 True 时,将为任何未知的操作创建自定义操作。开发人员需要使用自定义解析器将这些提供给 TensorFlow Lite 运行时。 (默认为假)
  • drop_control_dependency 布尔值,指示是否静默删除控制依赖项。这是因为 TFLite 不支持控制依赖。 (默认为真)
  • reorder_across_fake_quant 布尔值,指示是否在意外位置重新排序 FakeQuant 节点。当 FakeQuant 节点的位置阻止转换图形所需的图形转换时使用。生成与量化训练图不同的图,可能导致不同的算术行为。 (默认为假)
  • change_concat_input_ranges 用于更改量化模型的 concat 运算符的输入和输出的最小/最大范围行为的布尔值。当为 true 时更改 concat 运算符重叠的范围。 (默认为假)
  • output_format 输出文件格式。 (默认 tf.compat.v1.lite.constants.TFLITE,必须在 {tf.compat.v1.lite.constants.TFLITE, tf.compat.v1.lite.constants.GRAPHVIZ_DOT})
  • dump_graphviz_dir 文件夹的完整文件路径,用于在处理 GraphViz .dot 文件的各个阶段转储图形。优先于output_format=tf.compat.v1.lite.constants.GRAPHVIZ_DOT为了保持输出文件的要求。 (默认无)
  • dump_graphviz_video 布尔值,指示是否在每次图形转换后转储 GraphViz .dot 文件。需要指定 dump_graphviz_dir 标志。 (默认为假)
  • conversion_summary_dir 存储转换日志的目录的完整路径。 (默认无)
  • target_ops 已弃用。请改用target_spec.supported_ops
  • post_training_quantize 已弃用。请改用 optimizations 并将其设置为 {tf.lite.Optimize.DEFAULT} 。 (默认为假)
  • experimental_new_converter 实验标志,可能会发生变化。启用基于 MLIR 的转换。 (默认为真)
  • experimental_new_quantizer 实验标志,可能会发生变化。启用基于 MLIR 的量化转换,而不是基于 Flatbuffer 的转换。 (默认为真)

这用于从 TensorFlow GraphDef、SavedModel 或 tf.keras 模型转换为 TFLite FlatBuffer 或图形可视化。

示例用法:

# Converting a GraphDef from session.
converter = tf.compat.v1.lite.TFLiteConverter.from_session(
  sess, in_tensors, out_tensors)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

# Converting a GraphDef from file.
converter = tf.compat.v1.lite.TFLiteConverter.from_frozen_graph(
  graph_def_file, input_arrays, output_arrays)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

# Converting a SavedModel.
converter = tf.compat.v1.lite.TFLiteConverter.from_saved_model(
    saved_model_dir)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

# Converting a tf.keras model.
converter = tf.compat.v1.lite.TFLiteConverter.from_keras_model_file(
    keras_model)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.lite.TFLiteConverter。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。