Класс Interpreter
Класс Interpreter представляет собой интерпретатор
моделей TensorFlow Lite. Он загружает модель из файла,
управляет входными и выходными тензорами, а также
выполняет прямой проход по графу модели. Первым
параметром в конструктор передается путь к файлу
модели, вторым - количество потоков, третьим -
список экспериментальных опций.
Синтаксис
tf.lite.Interpreter(
model_path,
num_threads=None,
experimental_op_resolver_type=None,
experimental_preserve_all_tensors=False
)
Пример
Давайте создадим простую модель Keras, сохраним ее в формате TensorFlow Lite и загрузим через интерпретатор:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(optimizer='sgd', loss='mse')
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
with open('model.tflite', 'wb') as f:
f.write(tflite_model)
interpreter = tf.lite.Interpreter(model_path='model.tflite')
print(interpreter)
Результат выполнения кода:
<tensorflow.lite.python.interpreter.Interpreter object at 0x...>
Пример
Давайте выделим тензоры, получим детали входа и выхода, а затем выполним вывод модели:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(optimizer='sgd', loss='mse')
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
with open('model.tflite', 'wb') as f:
f.write(tflite_model)
interpreter = tf.lite.Interpreter(model_path='model.tflite')
interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
print(input_details[0]['shape'])
print(output_details[0]['shape'])
Результат выполнения кода:
[1 1]
[1 1]
Пример
Давайте передадим входные данные в интерпретатор,
вызовем метод invoke и получим результат:
import tensorflow as tf
import numpy as np
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(optimizer='sgd', loss='mse')
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
with open('model.tflite', 'wb') as f:
f.write(tflite_model)
interpreter = tf.lite.Interpreter(model_path='model.tflite')
interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
input_data = np.array([[5.0]], dtype=np.float32)
interpreter.set_tensor(input_details[0]['index'], input_data)
interpreter.invoke()
res = interpreter.get_tensor(output_details[0]['index'])
print(res)
Результат выполнения кода:
[[...]]
Смотрите также
-
метод
allocate_tensors,
который выделяет память под тензоры модели -
метод
invoke,
который выполняет вывод модели -
метод
get_input_details,
который возвращает информацию о входных тензорах -
метод
get_output_details,
который возвращает информацию о выходных тензорах