Exécutez des modèles TensorFlow en C ++ sans bazel, sans installation TensorFlow et sans compilation TensorFlow. Effectuez la manipulation du tenseur, utilisez une exécution impatient et exécutez des modèles enregistrés directement à partir de 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;Vous pouvez jeter un œil aux exemples pour voir un exemple complet sur la façon de charger un réseau profond et de le nourrir avec un exemple d'image.
CPPFlow utilise l'API TensorFlow C pour exécuter les modèles, ce qui signifie que vous pouvez l'utiliser sans installer TensorFlow et sans compiler l'intégralité du référentiel TensorFlow avec Bazel, il vous suffit de télécharger l'API C. Avec ce projet, vous pouvez gérer et exécuter vos modèles en C ++ sans vous soucier du vide, du malloc ou gratuitement. Avec CPPFlow, vous pouvez facilement:
Puisqu'il utilise l'API TensorFlow 2 C, vous n'avez qu'à le télécharger, consultez les documents pour voir un guide sur la façon de le faire.
Ensuite, vous pouvez installer la bibliothèque:
git clone [email protected]:serizba/cppflow.git
cd cppflow/examples/load_model
mkdir build
cd build
cmake ..
make -j
make installVous pouvez maintenant consulter le guide QuickStart pour exécuter un programme à l'aide de CPPFlow.
Vérifiez les documents sur https://serizba.github.io/cppflow/.
Là, vous pouvez trouver des guides QuickStart et plus d'informations sur la façon d'installer la bibliothèque et d'exécuter les exemples.
CPPFlow est essentiellement un emballage sur TensorFlow C API. La classe de base, Tensor est l'emballage d'un tenseur TF impatiente, et il constante un pointeur vers sa représentation TF.
L'API TF C fournit les outils pour appeler tous les opérations TF RAW, mais les utiliser est déroutant. CPPFlow comprend une façade sur ces fonctions, de sorte qu'elles peuvent être appelées facilement comme des fonctions C ++ normales. Pour y parvenir, le fichier OPS contient (principalement) toutes les fonctions TF RAW OPS, mais avec une interface C ++ simple. Ce fichier a été généré automatiquement à l'aide d'un petit script.
CPPFlow comprend également un wrapper sur les modèles enregistrés TF, la classe de modèle, afin qu'ils puissent être facilement ouverts et exécutés.
Si vous êtes prêt à contribuer à ce projet, veuillez aller de l'avant pour visiter la feuille de route de développement de CPPFlow. Des relations publiques étiquetées spécialement contributor_wanted sont les bienvenues pour les nouveaux contributeurs.
Si vous utilisez ce code ou trouvez ce travail utile dans vos recherches, veuillez nous citer:
@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}
}
Nous utilisons le Guide de style C ++ de Google à l'aide de Linker de code statique Cpplint. Nous utilisons le guide de style Python de Google à l'aide de Pylint de linker de code statique à l'aide de la configuration pylintrc jointe.
CPPFlow n'est pas lié à TensorFlow. L'icône CPPFlow est une version modifiée du logo TensorFlow. Tensorflow, le logo TensorFlow et toutes les marques connexes sont des marques de Google Inc.