Я использую хак / обходной путь, чтобы избежать необходимости собирать всю библиотеку TF самостоятельно (что экономит время (настраивается за 3 минуты), дисковое пространство, установку зависимостей dev и размер получаемого двоичного файла). Это официально не поддерживается, но работает хорошо, если вы просто хотите быстро подключиться.
Установите TF через пипс ( pip install tensorflow
или pip install tensorflow-gpu
). Затем найдите его библиотеку _pywrap_tensorflow.so
(TF 0. * - 1.0) или _pywrap_tensorflow_internal.so
(TF 1.1+). В моем случае (Ubuntu) он находится по адресу /usr/local/lib/python2.7/dist-packages/tensorflow/python/_pywrap_tensorflow.so
. Затем создайте символическую ссылку на эту библиотеку, которая называется lib_pywrap_tensorflow.so
где-нибудь, где ваша система сборки найдет ее (например /usr/lib/local
). Префикс lib
важен! Вы также можете дать ему другое lib*.so
имя - если вы называете этоlibtensorflow.so
, вы можете получить лучшую совместимость с другими программами, написанными для работы с TF.
Затем создайте проект C ++, как вы привыкли (CMake, Make, Bazel, все, что вам нравится).
И тогда вы готовы просто сделать ссылку на эту библиотеку, чтобы TF был доступен для ваших проектов (и вам также нужно сделать ссылку на python2.7
библиотеки)! В CMake вы, например, просто добавляете target_link_libraries(target _pywrap_tensorflow python2.7)
.
Заголовочные файлы C ++ расположены вокруг этой библиотеки, например, в /usr/local/lib/python2.7/dist-packages/tensorflow/include/
.
Еще раз: этот способ официально не поддерживается, и вы можете столкнуться с различными проблемами. Библиотека выглядит статически связанной, например, с protobuf, поэтому вы можете работать в нечетных проблемах во время соединения или во время выполнения. Но я могу загрузить сохраненный график, восстановить веса и выполнить вывод, который является IMO наиболее востребованным функционалом в C ++.