Метод from_concrete_functions класса TFLiteConverter
Метод from_concrete_functions класса TFLiteConverter создает конвертер TensorFlow Lite из списка конкретных функций ConcreteFunction. Первым параметром метод принимает список конкретных функций, вторым - необязательный параметр trackable_obj, который указывает на объект, связанный с этими функциями.
Конкретные функции ConcreteFunction можно получить из графа TensorFlow с помощью метода get_concrete_function. Такой подход позволяет конвертировать отдельные функции, а не целые модели, что удобно при работе с пользовательскими вычислениями.
Синтаксис
TFLiteConverter.from_concrete_functions(funcs, [trackable_obj])
Пример
Давайте создадим простую функцию, получим ее конкретную функцию и сконвертируем в модель TensorFlow Lite:
import tensorflow as tf
def model_func(x):
return x + 2
concrete_func = tf.function(model_func).get_concrete_function(
tf.TensorSpec(shape=[1], dtype=tf.float32)
)
converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])
tflite_model = converter.convert()
print(type(tflite_model))
Результат выполнения кода:
<class 'bytes'>
Пример
Давайте создадим конкретную функцию для двумерного тензора и проверим работу конвертера:
import tensorflow as tf
def model_func(x):
return x * 3
concrete_func = tf.function(model_func).get_concrete_function(
tf.TensorSpec(shape=[2, 3], dtype=tf.float32)
)
converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])
tflite_model = converter.convert()
print(len(tflite_model) > 0)
Результат выполнения кода:
True
Пример
Давайте сконвертируем функцию с двумя конкретными функциями и сохраним модель в файл 'model.tflite':
import tensorflow as tf
def func_a(x):
return x + 1
def func_b(x):
return x - 1
concrete_a = tf.function(func_a).get_concrete_function(
tf.TensorSpec(shape=[1], dtype=tf.float32)
)
concrete_b = tf.function(func_b).get_concrete_function(
tf.TensorSpec(shape=[1], dtype=tf.float32)
)
converter = tf.lite.TFLiteConverter.from_concrete_functions(
[concrete_a, concrete_b]
)
tflite_model = converter.convert()
with open('model.tflite', 'wb') as f:
f.write(tflite_model)
print('model.tflite')
Результат выполнения кода:
"model.tflite"
Смотрите также
-
класс
TFLiteConverter,
который конвертирует модели TensorFlow в формат TensorFlow Lite -
метод
from_saved_model,
который создает конвертер из сохраненной модели -
метод
from_keras_model,
который создает конвертер из Keras-модели -
метод
convert,
который выполняет конвертацию в модель TensorFlow Lite