Как сохранить * TF2 * модели Keras, доставить и запустить из C_API - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь доставить модели TF2.Keras на пользовательские машины (Win / Linux / Mac) как часть большого существующего приложения, использующего предустановленный TF C_API (не хочу перекомпилировать TF2 для C ++).Первоначально нацеленный только на процессор, хотя в конечном счете требуется GPU.

Код должен иметь возможность запускать одну из нескольких различных нейронных сетей по требованию, быстро в любом порядке.(Живой код является многопоточным; я предполагаю, что им придется проходить через критическую секцию или переходить к одному потоку запуска)

Я пытаюсь изучить TF2 и выяснить, для чего предназначен процесс мышления.поставка моделей TF2, поскольку полезный и хорошо известный подход TF1 для моделей замораживания, похоже, исключен.

Похоже, SaveModel является текущим предложением, хотя и сохраняет во весь каталог файлов, что нежелательно практически для каждой метрики.Мне нужно иметь возможность загружать модели из памяти или не более одного внешнего файла.

Как я могу преобразовать модель обучения в модель логического вывода?Восстановить его и передать веса как константы, а не переменные?Любая помощь TF2 для этого?

Может ли модель быть переработана настолько, чтобы SaveModel создавал только файл .pb?

Как заставить тензоры входов и выходов всегда иметь предопределенные имена?(т.е. не зависит от типа слоя.) Код должен быть независимым от моделей, чтобы можно было выбрать другую сеть для конкретной функции, не зная, какова ее внутренняя структура.И модели могут быть заменены в любой момент.

Кажется, вы должны использовать @ tf.function и AutoGraph для упрощения использования (из C_API)?

Если это так, может ли функция @ tf.f использовать Model.predict ()?Или как мне сгенерировать эту функцию из слоев модели?

Какие операции необходимы для управления сетью в C_API?Я буду использовать TF_Tensors в памяти процессора для управления моделью и получения выходных данных.Концептуально это похоже на вызов функции.

Какие параметры компилятора используются для готовых библиотек C_API?Какой тип возможностей машины требуется, или библиотеки сами выбирают подходящие пути кода?(для машин AVX и не AVX, например.)

Для библиотеки GPU ... есть зависимость CUDA10, но CUDA10 уже заменен.Конечный пользователь может использовать другое программное обеспечение, требующее других версий CUDA.Могут ли они быть рядом?Есть ли разумный способ доставки TF с поддержкой GPU?Компиляция TF2 для разных версий компьютера / CUDA и предоставление разных версий для каждого из нескольких вариантов приложения неосуществимы, даже если это теоретически возможно.

Если используется версия графического процессора C_API, API сделает что-нибудь дляиспользовать графический процессор, если он присутствует?Как насчет нескольких?Т.е. библиотека обрабатывает размещение моделей на GPU, или приложение должно замечать GPU и решать, как их использовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...