在不帶Bazel的C ++中運行TensorFlow模型,無需安裝張量,而無需編譯TensorFlow。執行張量操作,使用急切的執行並直接從C ++保存的模型。
// Read the graph
cppflow::model model ( " saved_model_folder " );
// Load an image
auto input = cppflow::decode_jpeg(cppflow::read_file(std::string( " image.jpg " )));
// Cast it to float, normalize to range [0, 1], and add batch_dimension
input = cppflow::cast(input, TF_UINT8, TF_FLOAT);
input = input / 255 .f;
input = cppflow::expand_dims(input, 0 );
// Run
auto output = model(input);
// Show the predicted class
std::cout << cppflow::arg_max(output, 1 ) << std::endl;您可以查看示例,以查看有關如何加載深網並使用示例圖像饋送的完整示例。
CPPFlow使用TensorFlow C API運行模型,這意味著您可以在不安裝TensorFlow並且不使用Bazel編譯整個Tensorflow存儲庫的情況下使用它,您只需要下載C API即可。通過此項目,您可以在C ++中管理和運行模型,而不必擔心空白,Malloc或免費。使用CPPFLOF,您可以輕鬆:
由於它使用Tensorflow 2 C API,您只需要下載它,請檢查文檔以查看有關如何做的指南。
之後,您可以安裝庫:
git clone [email protected]:serizba/cppflow.git
cd cppflow/examples/load_model
mkdir build
cd build
cmake ..
make -j
make install現在,您可以檢查使用CPPFLOF運行程序的快速入門指南。
在https://serizba.github.io/cppflow/上查看文檔。
在這裡,您可以找到有關如何安裝庫和運行示例的Quick Start指南和更多信息。
CPPFlow基本上是Tensorflow C API上的包裝器。基本類Tensor是TF急切張量的包裝器,它只是指向其TF表示的指針。
TF C API提供了調用所有TF RAW OPS的工具,但使用它們令人困惑。 CPPFLOW包含這些功能上的立面,因此可以輕鬆地稱其為正常的C ++功能。為了實現這一目標,文件OPS包含(主要)所有TF RAW OPS功能,但具有簡單的C ++接口。該文件已使用小腳本自動生成。
CPPFLOW還包括TF保存模型(模型類)上的包裝器,因此可以輕鬆打開和執行它們。
如果您願意為該項目做出貢獻,請繼續訪問CPPFlow的開發路線圖。特別歡迎新contributor_wanted撰寫標記為PR或問題。
如果您使用此代碼或發現這項工作對您的研究有用,請引用我們:
@software{
izquierdo2019cppflow,
author = {Izquierdo, Sergio},
doi = {10.5281/zenodo.7107618},
title = {{cppflow: Run TensorFlow models in C++ without installation and without Bazel}},
url = {https://github.com/serizba/cppflow},
version = {2.0.0},
month = {5},
year = {2019}
}
我們使用靜態代碼鏈接器CPPLINT使用Google的C ++樣式指南。我們使用靜態代碼鏈接器Pylint使用附加的PylinTRC配置使用Google的Python樣式指南。
CPPFlow與TensorFlow無關。 CPPFlow圖標是TensorFlow徽標的修改版本。 TensorFlow,TensorFlow徽標和任何相關標記都是Google Inc.的商標。