На данный момент для TF 2.5LTS нужен базель 2.3.2. Пожалуйста, проверьте внутри tensorflow/.bazelversion.

Установите bazel-‹версия›-installer-linux-x86_64.sh отсюда: https://github.com/bazelbuild/bazel/releases

>> chmod +x bazel-<version>-installer-linux-x86_64.sh
>> ./bazel-<version>-installer-linux-x86_64.sh --user
>> export PATH="$PATH:$HOME/bin"
>> sources ~/.bashrc # sources ~/.zshrc

Затем клонируйте репозиторий github Tensorflow,

>> git clone https://github.com/tensorflow/tensorflow.git
>> cd tensorflow
>> .configure
You have bazel 3.7.2 installed.
Please specify the location of python. [Default is /home/saurav/anaconda3/bin/python3]:
Found possible Python library paths:
  /home/saurav/anaconda3/lib/python3.7/site-packages
  /opt/intel/openvino_2020.3.194/data_processing/dl_streamer/python
  /opt/intel/openvino_2020.3.194/data_processing/gstreamer/lib/python3.6/site-packages
  /opt/intel/openvino_2020.3.194/deployment_tools/model_optimizer
  /opt/intel/openvino_2020.3.194/deployment_tools/open_model_zoo/tools/accuracy_checker
  /opt/intel/openvino_2020.3.194/python/python3
  /opt/intel/openvino_2020.3.194/python/python3.7
Please input the desired Python library path to use.  Default is [/home/saurav/anaconda3/lib/python3.7/site-packages]
Do you wish to build TensorFlow with ROCm support? [y/N]: N
No ROCm support will be enabled for TensorFlow.
Do you wish to build TensorFlow with CUDA support? [y/N]: N
No CUDA support will be enabled for TensorFlow.
Do you wish to download a fresh release of clang? (Experimental) [y/N]: N
Clang will not be downloaded.
Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -Wno-sign-compare]:
Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]: n
Not configuring the WORKSPACE for Android builds.
Preconfigured Bazel build configs. You can use any of the below by adding "--config=<>" to your build command. See .bazelrc for more details.
 --config=mkl          # Build with MKL support.
 --config=mkl_aarch64  # Build with oneDNN and Compute Library for the Arm Architecture (ACL).
 --config=monolithic   # Config for mostly static monolithic build.
 --config=numa         # Build with NUMA support.
 --config=dynamic_kernels # (Experimental) Build kernels into separate shared objects.
 --config=v1           # Build with TensorFlow 1 API instead of TF 2 API.
Preconfigured Bazel build configs to DISABLE default on features:
 --config=nogcp        # Disable GCP support.
 --config=nonccl       # Disable NVIDIA NCCL support.
Configuration finished

Теперь постройте с bazel,

>> bazel test --config opt \ //tensorflow/tools/lib_package:libtensorflow_test
>> bazel build --config opt //tensorflow/tools/lib_package:libtensorflow

Поскольку bazel потребляет много памяти, мы можем указать использовать часть в случае ограничения ресурсов.

local_ram_resources: объем оперативной памяти

local_cpu_resources: количество процессоров в int

>> bazel test --config opt \
--jobs 1 \
--local_ram_resources 2048 --local_cpu_resources 10 \
--verbose_failures //tensorflow/tools/lib_package:libtensorflow_test
>> bazel build --config opt \
--jobs 1 \
--local_ram_resources 2048 --local_cpu_resources 10 \ //tensorflow/tools/lib_package:libtensorflow

Если вас интересует только TF C, вы можете ввести эту команду, она сгенерирует файлы include и lib, требуемые API TF C. Примечание: вы можете изменить

>> sudo tar -C /usr/local -xzf libtensorflow.tar.gz
>> sudo ldconfig

Структура папки:

Пример:

  1. Откройте терминал и введите следующее
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

вы можете добавить его в ~/.bashrc или ~/.zshrc.

2. создайте main.cpp и сохраните его.

#include <stdio.h>
#include <tensorflow/c/c_api.h>

int main() {
  printf("Hello from TensorFlow C library version %s\n", TF_Version());
  return 0;
}

Скомпилируйте код

>> gcc hello_tf.c -ltensorflow -o hello_tf

>> ./hello_tf
Hello from TensorFlow C library version 2.5.0-dev20210512

если вы хотите скомпилировать и запустить команду в одну строку.

>> gcc -I/usr/local/include -L/usr/local/lib hello_tf.c -ltensorflow -o hello_tf
>> ./hello_tf
Hello from TensorFlow C library version 2.5.0-dev20210512

Интеграция Tensorflow C Lib с cmake:

# CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(example)
find_library(TENSORFLOW_LIB tensorflow HINT $ENV{HOME}/libtensorflow2/lib)
set(CMAKE_CXX_STANDARD 17)
add_executable(example main.cpp)
target_include_directories(example PRIVATE ../../include $ENV{HOME}/libtensorflow2/include)
target_link_libraries (example "${TENSORFLOW_LIB} -ltensorflow")

Скомпилируйте и запустите код.

>> cmake .
>> make
>> ./example
Hello from TensorFlow C library version 2.5.0-dev20210512

Сделанный!

Пожалуйста, похлопайте, если вам это нравится.

Я отправлю код с большим количеством примеров.

Использованная литература:

  1. https://www.tensorflow.org
  2. https://cmake.org/