Самый быстрый способ оценки модели Tensorflow в производственной среде (если возможно, в C #) - PullRequest
0 голосов
/ 08 января 2019

Учтите, что я уже обучил модель, которая сохраняется с помощью tf.train.Saver(). Теперь я хотел бы использовать модель в производственной среде, которая находится в C #. Я уже смог использовать TensorFlowSharp и загрузить (что описывается как небольшой взлом здесь ) модель с использованием тензоров Saver в TensorFlowSharp и выполнить ее хорошо.

В пакетной оценке я получаю быстрые и вполне ожидаемые результаты производительности для каждого случая, которые составляют 10-20 микросекунд. Проблема заключается в том, что в производственной среде модель должна прогнозировать выборку за выборкой (онлайн-использование). При вызове прогнозирования для одного вектора я получаю среднее время выполнения около 1 миллисекунды, что намного медленнее.

При сравнении с моделями CNTK , которые дают время выполнения оценки в микросекундах даже для одиночных вызовов, это выглядит весьма прискорбно.

Я обвиняю в вызове session.GetRunner (). Run (), каждый раз передавая новый ввод. Я хотел бы спросить, есть ли какой-нибудь способ, как выполнить / оценить график Tensorflow в такой среде самым быстрым способом, учитывая, что я не знаю вводимых данных (так быстро, онлайн-оценка). Эта проблема связана только с оболочкой C #? Поможет ли мне использовать API C / C ++? Или это проблема в вызовах сессионного участника?

Я скомпилировал двоичные файлы, а также скомпилировал для себя TFSharp с разрешенным небезопасным кодом.

Спасибо

...