Использовать предварительно скомпилированный тензорный поток с cmake

У меня есть проект С++, настроенный в CLion, который использует CMake. Я использую различные сторонние библиотеки и хотел бы также интегрировать Tensorflow.

Я попробовал bazel скомпилировать Tensorflow в общую библиотеку libtensorflow.so, какой из них работал, но есть еще довольно много зависимостей (например, до текущего protobuf версия, и как только я это сделаю, есть больше), что я должен был бы исправить.

Есть ли способ использовать стандартный Tensorflow git репозиторий и каким-то образом связать библиотеки, которые предварительно скомпилированы для использования python? Или есть другой удобный способ?

Tensorflow в Python хорошо работает для меня.

Ответ 1

Я знаю, что этот ответ довольно поздно, но я столкнулся с вашей конкретной проблемой и смог ее решить. Я создал репозиторий здесь, который описывает, как выполнить именно то, что вы хотите. Суть это:

  • Добавьте правило сборки в репозиторий TensorFlow, содержащий все необходимые элементы C++.
  • Создайте общую библиотеку, используя Bazel, и скопируйте все заголовки в /usr/local.
  • Установите определенные версии Protobuf и Eigen (это делается автоматически с помощью скриптов) или добавьте их в качестве внешних зависимостей.
  • Сконфигурируйте ваш проект CMake с данными файлами.

Если у вас есть какие-либо вопросы или проблемы, не стесняйтесь обращаться ко мне.

Ответ 2

Если вы используете MacOS, используйте homebrew, CMake и pkg_config.

Сначала получите Tensorflow, используя brew:

brew install libtensorflow

Затем в CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(tf-inference)

find_package(PkgConfig)
pkg_check_modules(TensorFlow REQUIRED tensorflow)

link_directories(${TensorFlow_LIBRARY_DIRS})
include_directories(${TensorFlow_INCLUDE_DIRS})
add_compile_definitions(${TensorFlow_CFLAGS_OTHER})

add_executable(tf-inference inference.cpp)
target_link_libraries(tf-inference ${TensorFlow_LIBRARIES})