Чтобы иметь возможность запускать модель TensorFlow
lite, которая поддерживает собственные операции TensorFlow
, статическая библиотека libtensorflow-lite
должна быть перекомпилирована. Инструкции для этого в C++
можно найти ЗДЕСЬ .
В нем говорится, что
При построении библиотек TensorFlow Lite с использованием конвейера Bazel, дополнительная библиотека TensorFlow ops может быть включена и включена следующим образом:
Включить монолитные сборки, если необходимо, добавив флаг --config = monolithic build.
Добавить зависимость библиотеки делегатов ops TensorFlow к зависимостям сборки: tenorflow / lite / Delegates / Flex: Delegate.
Обратите внимание, что необходимый TfLiteDelegate будет установлен автоматически при создании интерпретатора во время выполнения, если делегат связан с клиентской библиотекой. Нет необходимости явно устанавливать экземпляр делегата, как это обычно требуется с другими типами делегатов.
Дело в том, что стандартный способ создания статической библиотеки заключается в сценарии оболочки / make (см. документы ЗДЕСЬ ; это для arm64
, но есть сценарии, которые можно использовать и для x86_64
). У меня нет очевидного способа собрать tensorflow-lite
с помощью bazel
и изменить там команды сборки.
Кто-нибудь успешно создавал это при попытке построить модели для arm64/x86_64
архитектур и может поделиться этим? Я новичок в bazel
и не могу найти подробное пошаговое руководство.
РЕДАКТИРОВАТЬ
После шагов по устранению неполадок, предложенных @jdehesa, я смог собрать libtensorflowlite.so
, но столкнулся с другой проблемой. Мое приложение успешно собрано, но при запуске приложения файл .so
не может быть найден:
./myapp: error while loading shared libraries: libtensorflowlite.so: cannot open shared object file: No such file or directory
Пути правильные, поскольку другие файлы .so
находятся в том же каталоге, что может бытьнашел. Кроме того, приложение работает при использовании статической библиотеки.
Чтобы воспроизвести проблему, я использовал образ сборки докера tensorflow/tensorflow:devel-gpu-py3
(инструкции найдены здесь ).
Я выполнил скрипт configure с настройками по умолчанию и использовал команду
bazel build --config=monolithic --define=with_select_tf_ops=true -c opt //tensorflow/lite:libtensorflowlite.so
для создания библиотеки. Я загрузил встроенную библиотеку в мой личный репозиторий (https://github.com/DocDriven/debug-lite).