Melihat Dokumen Resmi: Apa yang Anda lihat? Tarif biasa? Sekarang, coba tebak: ini adalah zona bebas bazel. Kami menggunakan cmake di sini!
Koleksi ini berisi contoh-contoh yang andal dan sederhana untuk menggunakan TensorFlow dalam C, C ++, GO dan Python: Muat model pra-terlatih atau kompilasi operasi khusus dengan atau tanpa CUDA. Semua build diuji terhadap versi TensorFlow stabil terbaru dan mengandalkan CMake dengan findTensorFlow.cmake khusus. File CMake ini mencakup pekerjaan umum untuk bug di versi TF tertentu.
| Tensorflow | Status |
|---|---|
| 1.14.0 | |
| 1.13.1 | |
| 1.12.0 | |
| 1.11.0 | |
| 1.10.0 | |
| 1.9.0 |
Repositori berisi contoh -contoh berikut.
| Contoh | Penjelasan |
|---|---|
| Operasi Kustom | Bangun Operasi Kustom untuk TensorFlow di C ++/CUDA (hanya membutuhkan PIP) |
| Inferensi (C ++) | Jalankan inferensi di C ++ |
| inferensi (c) | Jalankan inferensi di C |
| inferensi (go) | Jalankan inferensi di Go |
| penulis acara | Tulis file acara untuk Tensorboard di C ++ |
| Contoh Keras CPP-Inferensi | Jalankan model keras di C ++ |
| contoh sederhana | Buat dan jalankan grafik TensorFlow di C ++ |
| Ubah Ulang Contoh Gambar | Ubah Ubah Ubah Gambar Dalam TensorFlow Dengan/Tanpa OpenCV |
Contoh ini menggambarkan proses pembuatan operasi khusus menggunakan C ++/CUDA dan CMAKE. Ini tidak dimaksudkan untuk menunjukkan implementasi yang mendapatkan kinerja puncak. Sebaliknya, itu hanya templat boilerplate.
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 Contoh ini menggambarkan proses memuat gambar (menggunakan OpenCV atau TensorFlow), mengubah ukuran gambar yang menyimpan gambar sebagai JPG atau PNG (menggunakan OpenCV atau TensorFlow).
user@host $ cd examples/resize
user@host $ export TENSORFLOW_BUILD_DIR=...
user@host $ export TENSORFLOW_SOURCE_DIR=...
user@host $ cmake .
user@host $ make Ada dua contoh yang menunjukkan penanganan tensorflow-serving: menggunakan input vektor dan menggunakan input gambar yang dikodekan.
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] Buat model dalam python, simpan grafik ke disk dan memuatnya di C/C+/Go/Python untuk melakukan inferensi. Karena contoh-contoh ini didasarkan pada tensorflow C-API, mereka memerlukan libtensorflow_cc.so perpustakaan yang tidak dikirim dalam paket Pip (Tensorfow-GPU). Oleh karena itu, Anda perlu membangun tensorflow dari sumber sebelumnya, misalnya,
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/Kami hanya menjalankan model yang sangat mendasar
x = tf . placeholder ( tf . float32 , shape = [ 1 , 2 ], name = 'input' )
output = tf . identity ( tf . layers . dense ( x , 1 ), name = 'output' ) Karena itu, simpan model seperti yang Anda lakukan secara teratur. Ini dilakukan dalam example.py selain beberapa output
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]