النظر إلى المستندات الرسمية: ماذا ترى؟ الأجرة المعتادة؟ الآن ، خمن ماذا: هذه منطقة خالية من البازل. نستخدم cmake هنا!
تحتوي هذه المجموعة على أمثلة موثوقة وموافقة على استخدام TensorFlow في C ، C ++ ، Go و Python: تحميل نموذج تم تدريبه مسبقًا أو تجميع عملية مخصصة مع أو بدون CUDA. يتم اختبار جميع عمليات الإنشاء مقابل أحدث إصدار مستقر TensorFlow والاعتماد على Cmake مع findtensorflow.cmake مخصص. يتضمن ملف CMAKE هذا العمل المشترك للأخطاء في إصدارات TF محددة.
| Tensorflow | حالة |
|---|---|
| 1.14.0 | |
| 1.13.1 | |
| 1.12.0 | |
| 1.11.0 | |
| 1.10.0 | |
| 1.9.0 |
يحتوي المستودع على الأمثلة التالية.
| مثال | توضيح |
|---|---|
| عملية مخصصة | قم بإنشاء عملية مخصصة لـ TensorFlow في C ++/CUDA (يتطلب فقط PIP) |
| الاستدلال (C ++) | تشغيل الاستدلال في C ++ |
| الاستدلال (ج) | تشغيل الاستدلال في ج |
| الاستدلال (اذهب) | تشغيل الاستدلال في GO |
| كاتب الحدث | اكتب ملفات الأحداث لـ Tensorboard في C ++ |
| مثال Keras CPP | قم بتشغيل نموذج Keras في C ++ |
| مثال بسيط | إنشاء وتشغيل رسم بياني TensorFlow في C ++ |
| تغيير حجم مثال الصورة | تغيير حجم صورة في TensorFlow مع/بدون OpenCV |
يوضح هذا المثال عملية إنشاء عملية مخصصة باستخدام C ++/CUDA و CMake. ليس المقصود منه إظهار تطبيق يحصل على أداء ذروة. بدلاً من ذلك ، فهي مجرد مملوك للمخيلات.
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 يوضح هذا المثال عملية تحميل صورة (باستخدام OpenCV أو TensorFlow) ، وتغيير حجم الصورة التي تحفظ الصورة على أنها JPG أو PNG (باستخدام OpenCV أو TensorFlow).
user@host $ cd examples/resize
user@host $ export TENSORFLOW_BUILD_DIR=...
user@host $ export TENSORFLOW_SOURCE_DIR=...
user@host $ cmake .
user@host $ make هناك مثالان يوضحان معالجة تنسورفيلوود: باستخدام إدخال المتجه واستخدام إدخال صورة مشفرة.
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] قم بإنشاء نموذج في Python ، وحفظ الرسم البياني للقرص وتحميله في C/C+/GO/Python لأداء الاستدلال. نظرًا لأن هذه الأمثلة تستند إلى TensorFlow C-API ، فإنها تتطلب مكتبة libtensorflow_cc.so التي لا يتم شحنها في حزمة pip (TensorFow-GPU). وبالتالي ، ستحتاج إلى بناء Tensorflow من المصدر مسبقًا ، على سبيل المثال ،
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/نحن فقط ندير نموذجًا أساسيًا للغاية
x = tf . placeholder ( tf . float32 , shape = [ 1 , 2 ], name = 'input' )
output = tf . identity ( tf . layers . dense ( x , 1 ), name = 'output' ) لذلك ، احفظ النموذج كما تفعل بانتظام. يتم ذلك في example.py بي إلى جانب بعض المخرجات
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]