Это используется для преобразования модели TensorFlow GraphDef, SavedModel или tf.keras в TFLite FlatBuffer или визуализацию графика.
Пример использования:
# Converting a GraphDef from session.
converter = 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 = 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 = 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 = lite.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, пользовательские операции создаются для любой неизвестной операции. Разработчик должен предоставить их для выполнения TensorFlow Lite с пользовательским решателем. (по умолчанию False)
post_training_quantize
Устарело. Пожалуйста, укажите [Optimize.DEFAULT] для optimizations вместо этого. Логическое значение, указывающее, следует ли квантовать веса преобразованной модели с плавающей запятой. Размер модели будет уменьшен, и будут улучшены показатели производительности (за счет точности). (по умолчанию False)
dump_graphviz_dir
Полный путь к папке для вывода графов на различных этапах обработки файлов GraphViz .dot. Предпочтительнее --output_format=GRAPHVIZ_DOT, чтобы сохранить требования к выходному файлу. (по умолчанию None)
dump_graphviz_video
Логическое значение, указывающее, следует ли выводить граф после каждого преобразования графа. (по умолчанию False)
target_ops
Устарело. Пожалуйста, укажите target_spec.supported_ops вместо этого. Набор опций OpsSet, указывающих, какой конвертер использовать. (по умолчанию set([OpsSet.TFLITE_BUILTINS]))
target_spec
Экспериментальный флаг, может быть изменен. Указание целевого устройства.
optimizations
Экспериментальный флаг, может быть изменен. Список оптимизаций для применения при преобразовании модели. Например, [Optimize.DEFAULT]
representative_dataset
Представительный набор данных, который может быть использован для генерации входных и выходных образцов для модели. Конвертер может использовать набор данных для оценки различных оптимизаций.
experimental_enable_mlir_converter
Экспериментальный флаг, может быть изменен. Включает конвертер MLIR вместо конвертера TOCO.
Создает класс 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)
Создаёт экземпляр класса TFLiteConverter из SavedModel.
Аргументы
saved_model_dir
Директория SavedModel для преобразования.
input_arrays
Список входных тензоров для заморозки графа. Использует входные массивы из 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)