Используется для преобразования модели TensorFlow GraphDef, SavedModel или tf.keras в TFLite FlatBuffer или визуализацию графика.
Пример использования:
# Converting a GraphDef from session.
converter = tf.compat.v1.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.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.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.TFLiteConverter.from_keras_model_file(keras_model)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
Аргументы
graph_def
Замороженный граф TensorFlow GraphDef.
input_tensors
Список входных тензоров. Тип и форма вычисляются с помощью foo.shape и foo.dtype.
output_tensors
Список выходных тензоров (используется только имя .name).
input_arrays_with_shape
Кортеж строк, представляющих имена входных тензоров, и список целых чисел, представляющих формы входных данных (например, [("foo" : [1, 16, 16, 3])]). Используйте только в случае, если граф не может быть загружен в TensorFlow и когда input_tensors и output_tensors равны None. (по умолчанию None)
output_arrays
Список выходных тензоров для заморозки графа. Используйте только в случае, если граф не может быть загружен в TensorFlow и когда input_tensors и output_tensors равны None. (по умолчанию None)
experimental_debug_info_func
Экспериментальная функция для получения отладочной информации о графе для набора узлов из graph_def.
Исключения
ValueError
Некорректные аргументы.
Атрибуты
inference_type
Целевой тип данных для массивов вещественных чисел в выходном файле. Должен быть {tf.float32, tf.uint8}. Если optimzations указаны, этот параметр игнорируется. (по умолчанию tf.float32)
inference_input_type
Целевой тип данных для входных массивов вещественных чисел. Позволяет использовать другой тип для входных массивов. Если указан целочисленный тип и optimizations не используются, необходимо указать quantized_inputs_stats. Если inference_type равен tf.uint8, что сигнализирует о преобразовании в полностью квантованную модель из модели с квантованным обучением, то inference_input_type по умолчанию равен tf.uint8. Во всех остальных случаях inference_input_type по умолчанию равен tf.float32. Должен быть {tf.float32, tf.uint8, tf.int8}
inference_output_type
Целевой тип данных для выходных массивов вещественных чисел. Позволяет использовать другой тип для выходных массивов. Если inference_type равен tf.uint8, что сигнализирует о преобразовании в полностью квантованную модель из модели с квантованным обучением, то inference_output_type по умолчанию равен tf.uint8. Во всех остальных случаях inference_output_type должен быть tf.float32, в противном случае будет выброшено исключение. Должен быть {tf.float32, tf.uint8, tf.int8}
output_format
Формат выходного файла. В настоящее время должен быть {TFLITE, GRAPHVIZ_DOT}. (по умолчанию TFLITE)
quantized_input_stats
Словарь строк, представляющих имена входных тензоров, сопоставленные с кортежем чисел с плавающей запятой, представляющих среднее и стандартное отклонение обучающих данных (например, {"foo" : (0., 1.)}). Необходимо только если inference_input_type равен QUANTIZED_UINT8. real_input_value = (quantized_input_value - mean_value) / std_dev_value. (по умолчанию {})
default_ranges_stats
Кортеж целых чисел, представляющих диапазоны значений (min, max) для всех массивов без указанного диапазона. Предназначен для экспериментов с квантованием через «фиктивное квантование». (по умолчанию None)
drop_control_dependency
Логическое значение, указывающее, следует ли молча опускать зависимости управления. Это связано с тем, что TFLite не поддерживает зависимости управления. (по умолчанию True)
reorder_across_fake_quant
Логическое значение, указывающее, следует ли переупорядочивать узлы FakeQuant в неожиданных местах. Используется, когда расположение узлов FakeQuant препятствует преобразованиям графа, необходимым для преобразования графа. В результате получается граф, отличающийся от квантованного графа обучения, что может привести к различным арифметическим результатам. (по умолчанию False)
change_concat_input_ranges
Логическое значение, изменяющее поведение минимальных/максимальных диапазонов для входов и выходов оператора concat для квантованных моделей. Изменяет перекрытие диапазонов оператора concat, если значение true. (по умолчанию False)
allow_custom_ops
Логическое значение, указывающее, следует ли разрешить пользовательские операции. Когда значение false, любая неизвестная операция является ошибкой. Когда значение true, для любой неизвестной операции создаются пользовательские операции. Разработчик должен предоставить их в runtime TensorFlow Lite с помощью пользовательского решателя. (по умолчанию False)
post_training_quantize
Устарело. Пожалуйста, укажите [Optimize.DEFAULT] для optimizations вместо этого. Логическое значение, указывающее, следует ли квантовать веса преобразованной модели с плавающей запятой. Размер модели будет уменьшен, и время отклика будет улучшено (за счет точности). (по умолчанию False)
dump_graphviz_dir
Полный путь к папке для вывода графов на различных этапах обработки файлов GraphViz .dot. Предпочтительнее, чем --output_format=GRAPHVIZ_DOT, чтобы сохранить требования к выходному файлу. (по умолчанию None)
dump_graphviz_video
Логическое значение, указывающее, следует ли выводить граф после каждого преобразования графа. (по умолчанию False)
conversion_summary_dir
Строка, указывающая путь к сгенерированным журналам преобразования.
target_ops
Устарело. Пожалуйста, укажите target_spec.supported_ops вместо этого. Набор опций OpsSet, указывающих, какой преобразователь использовать. (по умолчанию set([OpsSet.TFLITE_BUILTINS]))
target_spec
Экспериментальный флаг, может быть изменён. Указание целевого устройства.
optimizations
Экспериментальный флаг, может быть изменён. Список оптимизаций, которые следует применять при преобразовании модели. Например, [Optimize.DEFAULT]
representative_dataset
Представительный набор данных, который может быть использован для генерации входных и выходных образцов для модели. Преобразователь может использовать набор данных для оценки различных оптимизаций.
experimental_new_converter
Экспериментальный флаг, может быть изменён. Включает преобразование на основе MLIR вместо преобразования TOCO. (по умолчанию True)
Создаёт класс TFLiteConverter из файла, содержащего замороженный GraphDef.
Аргументы
graph_def_file
Полный путь к файлу, содержащему замороженный GraphDef.
input_arrays
Список входных тензоров для заморозки графа.
output_arrays
Список выходных тензоров для заморозки графа.
input_shapes
Словарь строк, представляющих имена входных тензоров, и списков целых чисел, представляющих формы входных данных (например, {"foo" : [1, 16, 16, 3]}). Автоматически определяется, когда input_shapes равно None (например, {"foo" : None}). (по умолчанию None)
Возвращает
Класс TFLiteConverter.
Исключения
IOError
Файл не найден. Не удалось проанализировать входной файл.
ValueError
Граф не заморожен. input_arrays или output_arrays содержат некорректное имя тензора. input_shapes неверно определены, когда требуется.
Создаёт класс TFLiteConverter из файла модели tf.keras.
Аргументы
model_file
Полный путь к файлу HDF5, содержащему модель tf.keras.
input_arrays
Список входных тензоров для заморозки графа. Использует входные массивы из SignatureDef, если не указаны. (по умолчанию None)
input_shapes
Словарь строк, представляющих имена входных тензоров, и списков целых чисел, представляющих формы входных данных (например, {"foo" : [1, 16, 16, 3]}). Автоматически определяется, когда input_shapes равно None (например, {"foo" : None}). (по умолчанию None)
output_arrays
Список выходных тензоров для заморозки графа. Использует выходные массивы из SignatureDef, если не указаны. (по умолчанию None)
custom_objects
Словарь, сопоставляющий имена (строки) с пользовательскими классами или функциями, которые необходимо учитывать во время десериализации модели. (по умолчанию None)
Список входных тензоров для заморозки графа. Использует входные массивы из SignatureDef, если они не указаны. (по умолчанию None)
input_shapes
Словарь строк, представляющих имена входных тензоров, и списка целых чисел, представляющих входные формы (например, {"foo" : [1, 16, 16, 3]}). Автоматически определяется, когда входные формы равны None (например, {"foo" : None}). (по умолчанию None)
output_arrays
Список выходных тензоров для заморозки графа. Использует выходные массивы из SignatureDef, если они не указаны. (по умолчанию None)
tag_set
Набор тегов, идентифицирующих MetaGraphDef в SavedModel для анализа. Все теги в наборе должны быть присутствовать. (по умолчанию набор("serve"))
signature_key
Ключ, идентифицирующий SignatureDef, содержащий входные и выходные данные. (по умолчанию DEFAULT_SERVING_SIGNATURE_DEF_KEY)