Часто задаваемые вопросы

Если вы не нашли здесь ответа на свой вопрос, просмотрите нашу подробную документацию по этой теме или сообщите о проблеме на GitHub .

Преобразование модели

Какие форматы поддерживаются для преобразования из TensorFlow в TensorFlow Lite?

Поддерживаемые форматы перечислены здесь.

Почему некоторые операции не реализованы в TensorFlow Lite?

Чтобы сохранить легкость TFLite, в TFLite поддерживаются только определенные операторы TF (перечисленные в разрешенном списке ).

Почему моя модель не конвертируется?

Поскольку количество операций TensorFlow Lite меньше, чем у TensorFlow, некоторые модели могут не иметь возможности преобразования. Здесь перечислены некоторые распространенные ошибки.

Если у вас возникли проблемы с преобразованием, не связанные с отсутствующими операциями или потоками управления, найдите наши проблемы на GitHub или создайте новую .

Как проверить, что модель TensorFlow Lite ведет себя так же, как исходная модель TensorFlow?

Лучший способ тестирования — сравнить выходные данные моделей TensorFlow и TensorFlow Lite для одних и тех же входных данных (тестовые данные или случайные входные данные), как показано здесь .

Как определить входы/выходы для буфера протокола GraphDef?

Самый простой способ проверить график из файла .pb — использовать Netron , программу просмотра моделей машинного обучения с открытым исходным кодом.

Если Netron не может открыть график, вы можете попробовать инструмент summum_graph .

Если инструмент summum_graph выдает ошибку, вы можете визуализировать GraphDef с помощью TensorBoard и поискать входные и выходные данные на графике. Чтобы визуализировать файл .pb , используйте скрипт import_pb_to_tensorboard.py , как показано ниже:

python import_pb_to_tensorboard.py --model_dir <model path> --log_dir <log dir path>

Как проверить файл .tflite ?

Netron — это самый простой способ визуализировать модель TensorFlow Lite.

Если Netron не может открыть вашу модель TensorFlow Lite, вы можете попробовать сценарий Visualize.py в нашем репозитории.

Если вы используете TF 2.5 или более позднюю версию

python -m tensorflow.lite.tools.visualize model.tflite visualized_model.html

В противном случае вы можете запустить этот скрипт с помощью Bazel.

bazel run //tensorflow/lite/tools:visualize model.tflite visualized_model.html

Оптимизация

Как уменьшить размер преобразованной модели TensorFlow Lite?

Квантование после обучения можно использовать во время преобразования в TensorFlow Lite, чтобы уменьшить размер модели. Квантование после обучения квантует веса до 8-битной точности из чисел с плавающей запятой и деквантует их во время выполнения для выполнения вычислений с плавающей запятой. Однако обратите внимание, что это может иметь некоторые последствия для точности.

Если возможно переобучение модели, рассмотрите возможность обучения с учетом квантования . Однако обратите внимание, что обучение с учетом квантования доступно только для подмножества архитектур сверточных нейронных сетей.

Для более глубокого понимания различных методов оптимизации посмотрите Оптимизацию модели .

Как оптимизировать производительность TensorFlow Lite для моей задачи машинного обучения?

Высокоуровневый процесс оптимизации производительности TensorFlow Lite выглядит примерно так:

  • Убедитесь, что у вас есть подходящая модель для этой задачи. Для классификации изображений посетите TensorFlow Hub .
  • Настройте количество потоков. Многие операторы TensorFlow Lite поддерживают многопоточные ядра. Для этого вы можете использовать SetNumThreads() в API C++ . Однако увеличение количества потоков приводит к нестабильности производительности в зависимости от среды.
  • Используйте аппаратные ускорители. TensorFlow Lite поддерживает ускорение моделей для конкретного оборудования с помощью делегатов. Ознакомьтесь с нашим руководством для делегатов , чтобы узнать, какие ускорители поддерживаются и как их использовать с вашей моделью на устройстве.
  • (Расширенная) Модель профиля. Инструмент сравнительного анализа Tensorflow Lite имеет встроенный профилировщик, который может отображать статистику по каждому оператору. Если вы знаете, как оптимизировать производительность оператора для вашей конкретной платформы, вы можете реализовать собственный оператор .

Более подробное обсуждение способов оптимизации производительности можно найти в разделе Best Practices .