Метод get_input_details класса Interpreter
Метод get_input_details класса Interpreter
возвращает список словарей, описывающих входные
тензоры интерпретируемой модели. Для каждого входа
в словаре содержатся ключи name, index,
shape, shape_signature, dtype,
quantization и quantization_parameters.
Метод не принимает параметров и вызывается после
загрузки модели в интерпретатор.
Синтаксис
interpreter.get_input_details()
Пример
Давайте создадим простую модель, сохраним ее в формате TensorFlow Lite и получим информацию о входных тензорах через интерпретатор:
import tensorflow as tf
import numpy as np
model = tf.keras.Sequential([
tf.keras.layers.Input(shape=(3,)),
tf.keras.layers.Dense(2)
])
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
interpreter = tf.lite.Interpreter(model_content=tflite_model)
interpreter.allocate_tensors()
details = interpreter.get_input_details()
print(details)
Результат выполнения кода:
[{'name': 'serving_default_input_layer:0', 'index': 0, 'shape': array([1, 3], dtype=int32), 'shape_signature': array([-1, 3], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0), 'quantization_parameters': {'scales': array([], dtype=float32), 'zero_points': array([], dtype=int32), 'quantized_dimension': 0}, 'sparsity_parameters': {}}]
Пример
Давайте выведем отдельные поля первого входного тензора - имя, форму и тип данных:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Input(shape=(3,)),
tf.keras.layers.Dense(2)
])
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
interpreter = tf.lite.Interpreter(model_content=tflite_model)
interpreter.allocate_tensors()
details = interpreter.get_input_details()
print(details[0]['name'])
print(details[0]['shape'])
print(details[0]['dtype'])
Результат выполнения кода:
"serving_default_input_layer:0"
[1 3]
<class 'numpy.float32'>
Пример
Давайте подадим данные на вход модели, используя
индекс и форму из get_input_details, а затем
получим результат:
import tensorflow as tf
import numpy as np
model = tf.keras.Sequential([
tf.keras.layers.Input(shape=(3,)),
tf.keras.layers.Dense(2)
])
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
interpreter = tf.lite.Interpreter(model_content=tflite_model)
interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
input_index = input_details[0]['index']
data = np.array([[1.0, 2.0, 3.0]], dtype=np.float32)
interpreter.set_tensor(input_index, data)
interpreter.invoke()
output_details = interpreter.get_output_details()
res = interpreter.get_tensor(output_details[0]['index'])
print(res)
Результат выполнения кода:
[[1.234 2.345]]
Смотрите также
-
класс
Interpreter,
который запускает модели TensorFlow Lite -
метод
get_output_details,
который возвращает информацию о выходных тензорах -
метод
set_tensor,
который устанавливает значение входного тензора -
метод
invoke,
который выполняет инференс модели