Führen Sie Tensorflow -Modelle in C ++ ohne Basel, ohne Tensorflow -Installation und ohne Zusammenstellung des Tensorflows aus. Führen Sie eine Tensormanipulation durch, verwenden Sie die Eifrig -Ausführung und führen Sie gespeicherte Modelle direkt von C ++ aus.
// 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;Sie können einen Blick auf die Beispiele werfen, um ein vollständiges Beispiel zum Laden eines tiefen Netzwerks zu sehen und es mit einem Beispielbild zu füttern.
CPPFlow verwendet den TensorFlow C -API, um die Modelle auszuführen. Dies bedeutet, dass Sie sie verwenden können, ohne den Tensorflow zu installieren, und ohne das gesamte TensorFlow -Repository mit Basel zu kompilieren, müssen Sie nur die C -API herunterladen. Mit diesem Projekt können Sie Ihre Modelle in C ++ verwalten und ausführen, ohne sich um Leere, Malloc oder kostenlos zu sorgen. Mit Cppflow können Sie leicht:
Da es TensorFlow 2 C API verwendet, müssen Sie es nur herunterladen. Überprüfen Sie die Dokumente, um eine Anleitung zu sehen, wie es geht.
Anschließend können Sie die Bibliothek installieren:
git clone [email protected]:serizba/cppflow.git
cd cppflow/examples/load_model
mkdir build
cd build
cmake ..
make -j
make installJetzt können Sie den QuickStart -Handbuch überprüfen, um ein Programm mit CPPFlow auszuführen.
Überprüfen Sie die Dokumente unter https://serizba.github.io/cpplow/.
Dort finden Sie QuickStart Guides und weitere Informationen zur Installation der Bibliothek und zum Ausführen der Beispiele.
CPPFlow ist im Grunde ein Wrapper über Tensorflow C API. Die grundlegende Klasse, Tensor, ist ein Wrapper eines TF -eifrigen Tensors und bildet nur einen Zeiger auf seine TF -Darstellung.
Die TF C -API stellt die Werkzeuge zur Verfügung, um alle TF -RAW -OPs aufzurufen, aber es ist verwirrend. CPPFlow enthält eine Fassade über diese Funktionen, sodass sie einfach als normale C ++ - Funktionen bezeichnet werden können. Um dies zu erreichen, enthält die Datei -OPS (meistens) alle Funktionen von TF RAW OPS, jedoch mit einer einfachen C ++ - Schnittstelle. Diese Datei wurde automatisch mit einem kleinen Skript generiert.
CPPFlow enthält auch einen Wrapper für TF -gespeicherte Modelle, die Modellklasse, sodass sie leicht geöffnet und ausgeführt werden können.
Wenn Sie bereit sind, zu diesem Projekt beizutragen, besuchen Sie bitte die Entwicklungs -Roadmap von CPPFlow. Speziell contributor_wanted .
Wenn Sie diesen Code verwenden oder diese Arbeit in Ihrer Forschung nützlich finden, zitieren Sie uns bitte:
@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}
}
Wir verwenden den C ++ - Style -Handbuch von Google mit statischer Code -Linker CPPLINT. Wir verwenden den Python -Style -Handbuch von Google mithilfe der statischen Code -Linker PyRINT unter Verwendung der angehängten Pylintrc -Konfiguration.
CPPFlow ist nicht mit Tensorflow verwandt. Das CPPFlow -Symbol ist eine modifizierte Version des Tensorflow -Logos. TensorFlow, das TensorFlow -Logo und alle zugehörigen Marken sind Marken von Google Inc.