Ejecute modelos TensorFlow en C ++ sin bazel, sin instalación de flujo de tensor y sin compilar TensorFlow. Realice la manipulación del tensor, use la ejecución ansiosa y ejecute modelos guardados directamente desde 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;Puede echar un vistazo a los ejemplos para ver un ejemplo completo sobre cómo cargar una red profunda y alimentarla con una imagen de muestra.
CPPFlow utiliza la API TensorFlow C para ejecutar los modelos, lo que significa que puede usarlo sin instalar TensorFlow y sin compilar todo el repositorio de TensorFlow con Bazel, solo necesita descargar la API C. Con este proyecto, puede administrar y ejecutar sus modelos en C ++ sin preocuparse por Void, Malloc o Free. Con cppflow fácilmente puedes:
Dado que usa la API TensorFlow 2 C, solo tiene que descargarlo, consulte los documentos para ver una guía sobre cómo hacerlo.
Posteriormente, puede instalar la biblioteca:
git clone [email protected]:serizba/cppflow.git
cd cppflow/examples/load_model
mkdir build
cd build
cmake ..
make -j
make installAhora puede consultar la guía QuickStart para ejecutar un programa usando cppflow.
Consulte los documentos en https://serizba.github.io/cppflow/.
Allí puede encontrar guías QuickStart y más información sobre cómo instalar la biblioteca y ejecutar los ejemplos.
CPPFLOW es básicamente un envoltorio sobre TensorFlow C API. La clase básica, Tensor es un envoltorio de un tensor ansioso por TF, y solo consiste en un puntero a su representación de TF.
La API TF C proporciona las herramientas para llamar a todas las operaciones RAW TF, pero usarlas es confusa. CPPFlow incluye una fachada sobre estas funciones, por lo que se pueden llamar fácilmente como funciones normales de C ++. Para lograr esto, el archivo OPS contiene (principalmente) todas las funciones de OPS RAW TF, pero con una interfaz C ++ simple. Este archivo se ha generado automáticamente utilizando un script pequeño.
CPPFlow también incluye un envoltorio en los modelos guardados en TF, la clase de modelo, para que se puedan abrir y ejecutar fácilmente.
Si está dispuesto a contribuir a este proyecto, adelante, visite la hoja de ruta de desarrollo de CPPFlow. Especialmente contributor_wanted los PR o los problemas etiquetados con la etiqueta son bienvenidos a los nuevos contribuyentes.
Si usa este código o encuentra este trabajo útil en su investigación, cíquanos:
@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 la guía de estilo C ++ de Google utilizando CPPLint de enlace de código estático. Utilizamos la guía de estilo Python de Google utilizando el Pylint de enlazador de código estático utilizando la configuración PYLINTRC adjunta.
CPPFLOW no está relacionado con TensorFlow. El icono CPPFlow es una versión modificada del logotipo de TensorFlow. TensorFlow, el logotipo de TensorFlow y cualquier marca relacionada son marcas registradas de Google Inc.