Betrachten Sie die offiziellen Dokumente: Was sehen Sie? Der übliche Fahrpreis? Ratet mal, was: Dies ist eine bazelfreie Zone. Wir verwenden CMake hier!
Diese Sammlung enthält zuverlässige und toten Beispiele für den Tensorflow in C, C ++, Go und Python: Laden Sie ein vorgebildetes Modell oder kompilieren Sie einen benutzerdefinierten Betrieb mit oder ohne CUDA. Alle Builds werden gegen die neueste stabile Tensorflow -Version getestet und sind mit einem benutzerdefinierten Findtensorflow.cMake auf CMake angewiesen. Diese CMake -Datei enthält gemeinsame Arbeiten für Fehler in bestimmten TF -Versionen.
| Tensorflow | Status |
|---|---|
| 1.14.0 | |
| 1.13.1 | |
| 1.12.0 | |
| 1.11.0 | |
| 1.10.0 | |
| 1.9.0 |
Das Repository enthält die folgenden Beispiele.
| Beispiel | Erläuterung |
|---|---|
| Benutzerdefinierte Operation | Erstellen Sie einen benutzerdefinierten Betrieb für TensorFlow in C ++/CUDA (erfordert nur PIP) |
| Inferenz (C ++) | Führen Sie Inferenz in C ++ aus |
| Inferenz (c) | Inferenz in C. |
| Inferenz (Go) | Schluss in GO leiten |
| Eventautor | Schreiben Sie Ereignisdateien für Tensorboard in C ++ |
| Beispiel für Keras CPP-Inferenz | Führen Sie ein Kerasmodell in C ++ durch |
| Einfaches Beispiel | Erstellen und führen Sie ein TensorFlow -Diagramm in C ++ aus und führen Sie es aus |
| Bildgröße Bildbeispiel | Größen Sie die Größe eines Bildes im Tensorflow mit/ohne openCV |
Dieses Beispiel zeigt den Prozess des Erstellens eines benutzerdefinierten Betriebs mit C ++/CUDA und CMAKE. Es ist nicht beabsichtigt, eine Implementierung zu zeigen, die eine Spitzenleistung erhält. Stattdessen handelt es sich nur um eine Boilerplate-Template.
user@host $ pip install tensorflow-gpu --user # solely the pip package is needed
user@host $ cd custom_op/user_ops
user@host $ cmake .
user@host $ make
user@host $ python test_matrix_add.py
user@host $ cd ..
user@host $ python example.py Dieses Beispiel zeigt den Prozess des Ladens eines Bildes (unter Verwendung von OpenCV oder TensorFlow), wobei die Größe des Bildes das Bild als JPG oder PNG (unter Verwendung von OpenCV oder TensorFlow) gewährt.
user@host $ cd examples/resize
user@host $ export TENSORFLOW_BUILD_DIR=...
user@host $ export TENSORFLOW_SOURCE_DIR=...
user@host $ cmake .
user@host $ make Es gibt zwei Beispiele, die die Handhabung der Tensorflow-Sendung demonstrieren: Verwenden eines Vektoreingangs und Verwendung einer codierten Bildeingabe.
server@host $ CHOOSE=basic # or image
server@host $ cd serving/ ${CHOOSE} /training
server@host $ python create.py # create some model
server@host $ cd serving/server/
server@host $ ./run.sh # start server
# some some queries
client@host $ cd client/bash
client@host $ ./client.sh
client@host $ cd client/python
# for the basic-example
client@host $ python client_rest.py
client@host $ python client_grpc.py
# for the image-example
client@host $ python client_rest.py /path/to/img.[png,jpg]
client@host $ python client_grpc.py /path/to/img.[png,jpg] Erstellen Sie ein Modell in Python, speichern Sie das Diagramm auf Festplatte und laden Sie es in C/C+/GO/Python, um Inferenz durchzuführen. Da diese Beispiele auf dem Tensorflow C-API basieren, benötigen sie die Bibliothek libtensorflow_cc.so , die nicht im Pip-Package (Tensorfow-GPU) versendet wird. Daher müssen Sie im Voraus Tensorflow von Source, z. B., z.
user@host $ ls ${TENSORFLOW_SOURCE_DIR}
ACKNOWLEDGMENTS bazel-genfiles configure pip
ADOPTERS.md bazel-out configure.py py.pynano
ANDROID_NDK_HOME bazel-tensorflow configure.py.bkp README.md
...
user@host $ cd ${TENSORFLOW_SOURCE_DIR}
user@host $ ./configure
user@host $ # ... or whatever options you used here
user@host $ bazel build -c opt --copt=-mfpmath=both --copt=-msse4.2 --config=cuda //tensorflow:libtensorflow.so
user@host $ bazel build -c opt --copt=-mfpmath=both --copt=-msse4.2 --config=cuda //tensorflow:libtensorflow_cc.so
user@host $ export TENSORFLOW_BUILD_DIR=/tensorflow_dist
user@host $ mkdir ${TENSORFLOW_BUILD_DIR}
user@host $ cp ${TENSORFLOW_SOURCE_DIR} /bazel-bin/tensorflow/ * .so ${TENSORFLOW_BUILD_DIR} /
user@host $ cp ${TENSORFLOW_SOURCE_DIR} /bazel-genfiles/tensorflow/cc/ops/ * .h ${TENSORFLOW_BUILD_DIR} /includes/tensorflow/cc/ops/Wir führen gerade ein sehr grundlegendes Modell aus
x = tf . placeholder ( tf . float32 , shape = [ 1 , 2 ], name = 'input' )
output = tf . identity ( tf . layers . dense ( x , 1 ), name = 'output' ) Speichern Sie daher das Modell so, wie Sie es regelmäßig tun. Dies geschieht in example.py neben einigen Ausgängen
user@host $ python example.py
[<tf.Variable 'dense/kernel:0' shape=(2, 1) dtype=float32_ref>, <tf.Variable 'dense/bias:0' shape=(1,) dtype=float32_ref>]
input [[1. 1.]]
output [[2.1909506]]
dense/kernel:0 [[0.9070684]
[1.2838823]]
dense/bias:0 [0.] user@host $ python python/inference.py
[<tf.Variable 'dense/kernel:0' shape=(2, 1) dtype=float32_ref>, <tf.Variable 'dense/bias:0' shape=(1,) dtype=float32_ref>]
input [[1. 1.]]
output [[2.1909506]]
dense/kernel:0 [[0.9070684]
[1.2838823]]
dense/bias:0 [0.] user@host $ cd cc
user@host $ cmake .
user@host $ make
user@host $ cd ..
user@host $ ./cc/inference_cc
input Tensor<type: float shape: [1,2] values: [1 1]>
output Tensor<type: float shape: [1,1] values: [2.19095063]>
dense/kernel:0 Tensor<type: float shape: [2,1] values: [0.907068372][1.28388226]>
dense/bias:0 Tensor<type: float shape: [1] values: 0> user@host $ cd c
user@host $ cmake .
user@host $ make
user@host $ cd ..
user@host $ ./c/inference_c
2.190951
user@host $ go get github.com/tensorflow/tensorflow/tensorflow/go
user@host $ cd go
user@host $ ./build.sh
user@host $ cd ../
user@host $ ./inference_go
input [[1 1]]
output [[2.1909506]]
dense/kernel:0 [[0.9070684] [1.2838823]]
dense/bias:0 [0]