Запустите модели TensorFlow в C ++ без Bazel, без установки 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 использует API TensorFlow C для запуска моделей, что означает, что вы можете использовать его без установки TensorFlow и без составления всего репозитория TensorFlow с Bazel, вам просто нужно загрузить C API. С помощью этого проекта вы можете управлять и запускать свои модели в C ++, не беспокоясь о void, Malloc или Free. С CPPFLOW вы легко можете:
Поскольку он использует 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Теперь вы можете проверить руководство QuickStart, чтобы запустить программу с помощью CPPFLOW.
Проверьте документы на https://serizba.github.io/cppflow/.
Там вы можете найти QuickStart Guides и дополнительную информацию о том, как установить библиотеку и запустить примеры.
CPPFLOW - это в основном обертка над TensorFlow C API. Основной класс, Tensor - это обертка TF Железного тензора, и он просто постоянно поддерживает указатель на его представление TF.
TF C API предоставляет инструменты, чтобы вызвать все TF Raw Ops, но использование их сбивает с толку. CPPFLOW включает фасад по этим функциям, поэтому его можно легко назвать в качестве нормальных функций C ++. Чтобы достичь этого, File 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}
}
Мы используем руководство по стилю Google C ++ с помощью статического кода CPPLINT. Мы используем руководство Google Python Style с использованием конфигурации Static Code Pylint с использованием подключенной конфигурации PylinTrc.
CPPFLOW не связан с TensorFlow. Значок CPPFLOW - это модифицированная версия логотипа TensorFlow. Tensorflow, логотип Tensorflow и любые связанные с этим знаки являются товарными знаками Google Inc.