Dieses Repository ermöglicht die Verwendung der Tensorflow C ++ - API von außen von den Ordnern des TensorFlow -Quellcodes und ohne die Verwendung des Basel -Build -Systems.
Dieses Repository enthält zwei CMake -Projekte. Das TensorFlow_CC -Projekt lädt die TensorFlow C ++ - API in das Betriebssystem herunter, baut und installiert und das Beispielprojekt zeigt seine einfache Verwendung.
Wenn Sie dieses Projekt sofort verwenden möchten, holen Sie ein vorgebautes Bild auf Docker Hub!
Ausführen des Bildes auf der CPU:
docker run -it floopcz/tensorflow_cc:ubuntu /bin/bashWenn Sie auch Ihre NVIDIA -GPU verwenden möchten, installieren Sie Nvidia Docker und rennen Sie:
docker run --gpus all -it floopcz/tensorflow_cc:ubuntu-cuda /bin/bashDie Liste der verfügbaren Bilder:
| Bildname | Beschreibung |
|---|---|
floopcz/tensorflow_cc:ubuntu | Ubuntu Build von tensorflow_cc |
floopcz/tensorflow_cc:ubuntu-cuda | Ubuntu -Build von tensorflow_cc + Nvidia Cuda |
floopcz/tensorflow_cc:archlinux | Arch Linux Build von tensorflow_cc |
floopcz/tensorflow_cc:archlinux-cuda | Arch Linux Build von tensorflow_cc + Nvidia CUDA |
Um eines der Bilder selbst zu erstellen, z. B. ubuntu , rennen Sie:
docker build -t floopcz/tensorflow_cc:ubuntu -f Dockerfiles/ubuntu . Repository -Anforderungen installieren:
sudo apt-get install cmake curl g++-7 git python3-dev python3-numpy sudo wget
Richten Sie Python 3 als Standard -Python ein:
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
Um den Tensorflow selbst zu erstellen, erfordert das Build -Verfahren auch Basel:
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
Wenn Sie die GPU-Unterstützung für Ubuntu benötigen, installieren Sie bitte auch Nvidia Cuda Toolkit (> = 11.1), NVIDIA-Treiber, Cudnn und cuda-command-line-tools Paket. Die Build -Prozedur erkennt automatisch CUDA, wenn es in /opt/cuda oder /usr/local/cuda -Verzeichnissen installiert ist.
sudo pacman -S base-devel bazel cmake git python python-numpy wget
Installieren Sie für die GPU -Unterstützung auf Arch auch Folgendes:
sudo pacman -S cuda cudnn nvidia
Warnung: Neuere Versionen von TensorFlow erstellen manchmal mit der neuesten Version von Bazel. Möglicherweise möchten Sie eine ältere Version von Bazel (z. B. 5.1.1) installieren.
WARNUNG: Wenn Ihr Programm Protobuf verwendet und Sie Links oder andere Probleme begegnen, können Sie es versuchen -DINSTALL_PROTOBUF=ON um eine Protobuf -Version zu installieren, die dem mit Tensorflow gebündelten Version entspricht. Unsere Dockerfiles sind bereits mit der richtigen Version von Protobuf erstellt. Vielleicht möchten Sie Ihr Programm zuerst in der Dockerfile ausprobieren.
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
Warnung: Optimierungen für die Intel CPU -Generation >=haswell sind standardmäßig aktiviert. Wenn Sie einen Prozessor haben, der älter als haswell -Generation ist, möchten Sie möglicherweise vor dem Build export CC_OPT_FLAGS="-march=native" ausführen. Dieser Befehl bietet die bestmöglichen Optimierungen für Ihre aktuelle CPU -Generation, kann jedoch dazu führen, dass die gebaute Bibliothek mit älteren Generationen nicht kompatibel ist.
WARNUNG: In Umgebungen mit niedrigem Memory oder vielen CPU-Umgebungen kann der Bazel-Scheduler die Schätzungen des Ressourcenverbrauchs verpassen und der Build kann vom Out-of-Memory-Killer gekündigt werden. Wenn dies Ihr Fall ist, sollten Sie CMake, z 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
Wenn Sie sich noch nicht sicher sind, wenden Sie sich an die Dockerfiles für Ubuntu und Arch Linux.