在不带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.的商标。