Эта статья предназначена для того, чтобы больше рассказать о том, как TFLite быстро и экономично выполняет логические выводы по всем различным типам периферийных устройств.
У нас есть другой набор периферийных устройств, таких как устройства IoT, мобильные устройства, встроенные устройства и т. д. Как TFLite делает логические выводы плавно и элегантно. Чтобы понять это, давайте погрузимся в это.
Что такое переводчик?
Как мы знаем, TFLite состоит из набора инструментов, а TFLite состоит из двух основных компонентов:
- Конвертер
- Устный переводчик
Конвертер поможет нам преобразовать модели глубокого обучения в формат TFLite, а интерпретатор облегчит нам жизнь при выводе.
Интерпретатор TensorFlow Lite, который запускает специально оптимизированные модели на различных типах оборудования, включая мобильные телефоны, встроенные устройства Linux и микроконтроллеры.
Интерпретаторы TFLite взаимозаменяемо называются логическими выводами. Термин вывод относится к процессу выполнения модели TensorFlow Lite на периферийных устройствах, чтобы делать прогнозы на основе пользовательского ввода. Чтобы выполнить вывод с помощью облегченной модели TensorFlow, вы должны запустить ее через интерпретатор.
Интерпретатор TFLite спроектирован таким образом, чтобы быть экономичным и быстрым. Для достижения этой цели он использует статическое упорядочение графов и настраиваемый распределитель памяти, чтобы обеспечить минимальную задержку загрузки, инициализации и выполнения.
Шаг вывода:
API вывода TensorFlow предоставляются для наиболее распространенных мобильных/встроенных платформ, таких как Android, iOS и Linux, на нескольких языках программирования. Во всех библиотеках API TensorFlow Lite позволяет загружать модели, подавать входные данные и извлекать выходные данные.
Интерпретатор TFLite в целом выполняет следующие шаги:
- Загрузка модели:-
Первым и более важным шагом является загрузка модели .tflite в память, которая содержит график выполнения.
2. Преобразование данных:-
Модель не понимает необработанные входные данные. Чтобы преобразовать необработанные данные в формат, понятный модели, вам необходимо преобразовать данные. Например, для модели компьютерного зрения вам необходимо изменить размер входного изображения, а затем предоставить это изображение модели.
3. Вывод результатов:-
Теперь модель в памяти и данные в нужном формате, давайте сделаем вывод. Он включает в себя несколько шагов, таких как создание интерпретатора и выделение тензоров.
4. Интерпретация вывода:-
После третьего шага мы получим некоторый вывод после вывода, но конечный пользователь этого не поймет. Результаты моделирования в большинстве случаев представляют собой вероятности или приблизительные значения. Мы интерпретировали этот результат как осмысленный вывод.
Пример:-
Давайте возьмем вывод модели с использованием python
import numpy as np
import tensorflow as tf
# Load TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path="converted_model.tflite")
interpreter.allocate_tensors()
# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
# Test model on random input data.
input_shape = input_details[0]['shape']
input_data = np.array(np.random.random_sample(input_shape), dtype=np.float32)
interpreter.set_tensor(input_details[0]['index'], input_data)
interpreter.invoke()
# The function `get_tensor()` returns a copy of the tensor data.
# Use `tensor()` in order to get a pointer to the tensor.
output_data = interpreter.get_tensor(output_details[0]['index'])
print(output_data)
Пример на С++, даже если язык изменится или подчеркивание платформы изменится, шаги одинаковы:
// Load the model
std::unique_ptr<tflite::FlatBufferModel> model =
tflite::FlatBufferModel::BuildFromFile(filename);
// Build the interpreter
tflite::ops::builtin::BuiltinOpResolver resolver;
std::unique_ptr<tflite::Interpreter> interpreter;
tflite::InterpreterBuilder(*model, resolver)(&interpreter);
// Resize input tensors, if desired.
interpreter->AllocateTensors();
float* input = interpreter->typed_input_tensor<float>(0);
// Fill `input`.
interpreter->Invoke();
//output data
float* output = interpreter->typed_output_tensor<float>(0);
Вывод:-
В этой статье мы рассмотрели интерпретатор TFLite и шаги, связанные с выводом TFLite, и как это сделать.
Ссылка:-
https://www.tensorflow.org/lite/guide/inference
https://medium.com/techwasti/tensorflow-lite-deployment-523eec79c017