Execute os modelos TensorFlow em C ++ sem Bazel, sem instalação do TensorFlow e sem compilar o TensorFlow. Execute a manipulação do tensor, use a execução ansiosa e execute modelos salvos diretamente do 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;Você pode dar uma olhada nos exemplos para ver um exemplo completo sobre como carregar uma rede profunda e alimentá -la com uma imagem de amostra.
O CPPFlow usa a API do TensorFlow C para executar os modelos, o que significa que você pode usá -lo sem instalar o TensorFlow e, sem compilar todo o repositório do TensorFlow com o Bazel, basta baixar a API C. Com este projeto, você pode gerenciar e executar seus modelos em C ++ sem se preocupar com o Void, Malloc ou gratuito. Com o cppflow você pode facilmente:
Como ele usa a API do TensorFlow 2 C, você só precisa baixá -lo, verifique os documentos para ver um guia sobre como fazê -lo.
Depois, você pode instalar a biblioteca:
git clone [email protected]:serizba/cppflow.git
cd cppflow/examples/load_model
mkdir build
cd build
cmake ..
make -j
make installAgora você pode verificar o Guia do Quickstart para executar um programa usando o CPPFlow.
Verifique os documentos em https://serizba.github.io/cppflow/.
Lá você pode encontrar guias rápidos e mais informações sobre como instalar a biblioteca e executar os exemplos.
O CPPFlow é basicamente um invólucro sobre o Tensorflow C API. A classe básica, Tensor, é um invólucro de um tensor ansioso, e apenas conside um ponteiro para sua representação de TF.
A API TF C fornece as ferramentas para chamar todas as operações RAW TF, mas usá -las é confuso. O CPPFlow inclui uma fachada sobre essas funções, para que elas possam ser chamadas facilmente como funções normais de C ++. Para conseguir isso, o arquivo OPS contém (principalmente) todas as funções do TF Raw Ops, mas com uma interface C ++ simples. Este arquivo foi gerado automaticamente usando um pequeno script.
O CPPFlow também inclui um invólucro nos modelos salvos do TF, a classe Model, para que eles possam ser facilmente abertos e executados.
Se você estiver disposto a contribuir com este projeto, vá em frente e visite o roteiro de desenvolvimento do CPPFlow. Especialmente contributor_wanted Roted PR ou questões são muito bem -vindas a novos colaboradores.
Se você usar este código ou achar esse trabalho útil em sua pesquisa, cite -nos:
@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}
}
Utilizamos o guia de estilo C ++ do Google usando o Linker de código estático CPPLINT. Utilizamos o guia de estilo Python do Google usando o Linker de código estático Pylint usando a configuração do PyntRC anexada.
O CPPFlow não está relacionado ao TensorFlow. O ícone CPPFlow é uma versão modificada do logotipo do tensorflow. Tensorflow, o logotipo do TensorFlow e quaisquer marcas relacionadas são marcas comerciais do Google Inc.