Я використовую хак / вирішення, щоб уникнути необхідності будувати всю бібліотеку TF (це економить час (це налаштовано за 3 хвилини), дисковий простір, встановлення залежностей від розробників та розмір отриманого бінарного файлу). Це офіційно не підтримується, але добре працює, якщо ви просто хочете швидко заскочити.
Встановіть TF через pip ( 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/
.
Ще раз: цей спосіб офіційно не підтримується, і ви можете працювати з різними випусками. Здається, що бібліотека статично пов'язана, наприклад, з протобуфами, тому ви можете запускатись у непарних проблемах з часом зв’язку або під час виконання. Але я в змозі завантажити збережений графік, відновити ваги і виконати умовивід, що є IMO - найпотрібнішим функціоналом у C ++.