Использовать предварительно скомпилированный тензорный поток с 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})