Spec-Zone.ru › TensorFlow 2.4

tf.lite.Interpreter

Просмотреть исходный код на GitHub

Интерфейс интерпретатора для моделей TensorFlow Lite.

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.lite.Interpreter

tf.lite.Interpreter(
    model_path=None, model_content=None, experimental_delegates=None,
    num_threads=None
)

Это делает интерпретатор TensorFlow Lite доступным в Python. Возможно использование этого интерпретатора в многопотоковой среде Python, но необходимо убедиться, что функции конкретного экземпляра вызываются только из одного потока за раз. Таким образом, если вы хотите запустить 4 потока, выполняющих разные вычисления одновременно, создайте интерпретатор для каждого потока как локальную данные потока. Аналогично, если вы вызываете invoke() в одном потоке с одним интерпретатором, но хотите использовать tensor() в другом потоке после завершения, необходимо использовать синхронизирующие примитивы между потоками, чтобы убедиться, что invoke() вернул значение перед вызовом tensor().

Аргументы
model_path Путь к файлу TF-Lite Flatbuffer.
model_content Содержимое модели.
experimental_delegates Экспериментально. Подлежит изменению. Список объектов TfLiteDelegate, возвращаемых lite.load_delegate().
num_threads Устанавливает количество потоков, используемых интерпретатором и доступных для ядер CPU. Если не установлено, интерпретатор будет использовать реализационно-зависимое значение по умолчанию. В настоящее время только подмножество ядер, таких как conv, поддерживает многопоточность.
Исключения
ValueError Если интерпретатор не смог быть создан.

Методы

allocate_tensors

Просмотреть исходный код

allocate_tensors()

get_input_details

Просмотреть исходный код

get_input_details()

Получение деталей входных данных модели.

Возвращаемое значение
Список деталей входных данных.

get_output_details

Просмотреть исходный код

get_output_details()

Получение деталей выходных данных модели.

Возвращаемое значение
Список деталей выходных данных.

get_tensor

Просмотреть исходный код

get_tensor(
    tensor_index
)

Получение значения входного тензора (копия).

Если вы хотите избежать копирования, используйте tensor(). Эта функция не может использоваться для чтения промежуточных результатов.

Аргументы
tensor_index Индекс тензора, значение которого требуется получить. Это значение можно получить из поля 'index' в get_output_details.
Возвращаемое значение
массив numpy.

get_tensor_details

Просмотреть исходный код

get_tensor_details()

Получение деталей тензора для каждого тензора с действительными деталями тензора.

Тензоры, для которых необходимая информация о тензоре не найдена, не добавляются в список. Это включает временные тензоры без имени.

Возвращаемое значение
Список словарей, содержащих информацию о тензоре.

invoke

Просмотреть исходный код

invoke()

Вызов интерпретатора.

Убедитесь, что заданы размеры входных данных, тензоры выделены и значения заполнены перед вызовом. Также обратите внимание, что эта функция освобождает GIL, чтобы тяжелые вычисления могли выполняться в фоновом режиме, пока интерпретатор Python продолжает работу. Никакие другие функции этого объекта не должны вызываться, пока вызов invoke() не завершится.

Исключения
ValueError При сбое в подлежащем интерпретаторе возникает ValueError.

reset_all_variables

Просмотреть исходный код

reset_all_variables()

resize_tensor_input

Просмотреть исходный код

resize_tensor_input(
    input_index, tensor_size, strict=False
)

Изменение размера входного тензора.

interpreter = Interpreter(model_content=tflite_model)
interpreter.resize_tensor_input(0, [1, 224, 224, 3], strict=True)
interpreter.allocate_tensors()
interpreter.invoke()
Аргументы
input_index Индекс тензора входных данных для изменения размера. Это значение можно получить из поля 'index' в get_input_details.
tensor_size Форма tensor_shape для изменения размера входных данных.
strict Только неизвестные измерения могут быть изменены размером, когда strict равно True. Неизвестные измерения обозначаются как -1 в атрибуте shape_signature данного тензора. (по умолчанию False)
Исключения
ValueError Если интерпретатор не смог изменить размер входного тензора.

set_tensor

Просмотреть исходный код

set_tensor(
    tensor_index, value
)

Установка значения входного тензора.

Обратите внимание, что данные копируются в value.

Если вы хотите избежать копирования, используйте функцию tensor() для получения буфера numpy, указывающего на входной буфер в интерпретаторе tflite.

Аргументы
tensor_index Индекс тензора, значение которого требуется установить. Это значение можно получить из поля 'index' в get_input_details.
value Значение тензора для установки.
Исключения
ValueError Если интерпретатор не смог установить тензор.

tensor

Просмотреть исходный код

tensor(
    tensor_index
)

Возвращает функцию, которая предоставляет представление numpy текущего буфера тензора.

Это позволяет чтение и запись в эти тензоры без копирования. Это более точно отражает интерфейс метода tensor() класса C++ Interpreter, поэтому и название. Будьте внимательны, не удерживайте эти ссылки на выходные данные через вызовы allocate_tensors() и invoke(). Эта функция не может использоваться для чтения промежуточных результатов.

Использование:

interpreter.allocate_tensors()
input = interpreter.tensor(interpreter.get_input_details()[0]["index"])
output = interpreter.tensor(interpreter.get_output_details()[0]["index"])
for i in range(10):
  input().fill(3.)
  interpreter.invoke()
  print("inference %s" % output())

Обратите внимание, как эта функция избегает непосредственного создания массива numpy. Это важно, чтобы не удерживать фактические представления numpy к данным дольше необходимого. В противном случае интерпретатор больше не может быть вызван, так как интерпретатор может изменить размер и сделать тензоры недействительными. API NumPy не допускает изменения базовых буферов.

НЕПРАВИЛЬНО:

input = interpreter.tensor(interpreter.get_input_details()[0]["index"])()
output = interpreter.tensor(interpreter.get_output_details()[0]["index"])()
interpreter.allocate_tensors()  # This will throw RuntimeError
for i in range(10):
  input.fill(3.)
  interpreter.invoke()  # this will throw RuntimeError since input,output
Аргументы
tensor_index Индекс тензора, значение которого требуется получить. Это значение можно получить из поля 'index' в get_output_details.
Возвращаемое значение
Функция, которая может вернуть новый массив numpy, указывающий на внутреннее состояние тензора TFLite в любой момент. Безопасно удерживать функцию навсегда, но не безопасно удерживать массив numpy навсегда.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/lite/Interpreter

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API