該存儲庫使從TensorFlow源代碼文件夾的外部以及不使用Bazel Build System的外部使用TensorFlow C ++ API。
該存儲庫包含兩個CMAKE項目。 Tensorflow_cc項目下載,構建和安裝Tensorflow C ++ API到操作系統中,示例項目演示了其簡單的用法。
如果您想立即開始使用此項目,請在Docker Hub上獲取預構建的圖像!
在CPU上運行圖像:
docker run -it floopcz/tensorflow_cc:ubuntu /bin/bash如果您還想使用NVIDIA GPU,請安裝NVIDIA DOCKER並運行:
docker run --gpus all -it floopcz/tensorflow_cc:ubuntu-cuda /bin/bash可用圖像的列表:
| 圖像名稱 | 描述 |
|---|---|
floopcz/tensorflow_cc:ubuntu | ubuntu構建tensorflow_cc |
floopcz/tensorflow_cc:ubuntu-cuda | ubuntu構建tensorflow_cc + nvidia cuda |
floopcz/tensorflow_cc:archlinux | Arch Linux構建tensorflow_cc |
floopcz/tensorflow_cc:archlinux-cuda | tensorflow_cc + nvidia cuda的Arch Linux構建 |
要自己構建圖像之一,例如ubuntu ,運行:
docker build -t floopcz/tensorflow_cc:ubuntu -f Dockerfiles/ubuntu . 安裝存儲庫要求:
sudo apt-get install cmake curl g++-7 git python3-dev python3-numpy sudo wget
設置Python 3為默認的Python:
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
為了構建張量流本身,構建過程還需要Bazel:
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg
sudo mv bazel.gpg /etc/apt/trusted.gpg.d/
echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
sudo apt-get update && sudo apt-get install bazel
如果您需要在Ubuntu上進行GPU支持,請還安裝NVIDIA CUDA TOOLKIT(> = 11.1),NVIDIA驅動程序,Cudnn和cuda-command-line-tools軟件包。如果構建過程將其安裝在/opt/cuda或/usr/local/cuda目錄中,則將自動檢測到它。
sudo pacman -S base-devel bazel cmake git python python-numpy wget
對於ARCH上的GPU支持,也安裝以下內容:
sudo pacman -S cuda cudnn nvidia
警告: TensorFlow的新版本有時無法使用最新版本的Bazel構建。您可能希望安裝舊版本的Bazel(例如,5.1.1)。
警告:如果您的程序使用Protobuf並遇到鏈接或其他問題,則可以嘗試-DINSTALL_PROTOBUF=ON Onsine安裝Protobuf版本,該版本匹配與TensorFlow捆綁在一起的版本。我們的Dockerfiles已經使用了正確版本的Protobuf構建,因此您可能需要先在Dockerfile中嘗試您的程序。
git clone https://github.com/FloopCZ/tensorflow_cc.git
cd tensorflow_cc
cd tensorflow_cc
mkdir build && cd build
cmake ..
make
sudo make install
sudo ldconfig
警告:默認情況下啟用了Intel CPU生成>=haswell的優化。如果您的處理器比haswell Generation更古老,則可能希望在構建之前運行export CC_OPT_FLAGS="-march=native" 。此命令為您當前的CPU生成提供了最佳的優化,但可能會導致構建庫與老一代不兼容。
警告:在低內存或多個CPU環境中,Bazel調度程序可能會錯過資源消耗估算,並且可以由內存外殺手終止。如果是您的情況,請考慮將資源限制參數添加到cmake,例如, cmake -DLOCAL_RAM_RESOURCES=2048 -DLOCAL_CPU_RESOURCES=4 ..
# cleanup bazel build directory
rm -rf ~/.cache
# remove the build folder
cd .. && rm -rf build
// example.cpp
# include < tensorflow/core/platform/env.h >
# include < tensorflow/core/public/session.h >
# include < iostream >
using namespace std ;
using namespace tensorflow ;
int main ()
{
Session* session;
Status status = NewSession ( SessionOptions (), &session);
if (!status. ok ()) {
cout << status. ToString () << " n " ;
return 1 ;
}
cout << " Session successfully created. n " ;
} # CMakeLists.txt
find_package (TensorflowCC REQUIRED)
add_executable (example example.cpp)
# Link the Tensorflow library.
target_link_libraries (example TensorflowCC::TensorflowCC)
# You may also link cuda if it is available.
# find_package(CUDA)
# if(CUDA_FOUND)
# target_link_libraries(example ${CUDA_LIBRARIES})
# endif() mkdir build && cd build
cmake .. && make
./example
如果您仍然不確定,請諮詢Ubuntu和Arch Linux的Dockerfiles。