Последовательные прогнозы Tensorflow.js намного медленнее, чем одиночные - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть приложение, в котором я хочу постоянно делать и обрабатывать прогнозы.У меня есть функция, которая делает прогноз и что-то делает с результатом:

makeProcessPrediction(){
    return new Promise(resolve => {
      let prediction : any = this.model.predict(this.input_tensor);
      prediction.data().then((data_array) => {
              //... do something with prediction here
          }
      prediction.dispose();
      resolve('resolved');
      });
    });
}

Теперь, если я сделаю один вызов makeProcessPrediction, прогноз займет около 80 мс.Но если я назову это в цикле, подобном следующему:

while(condition){
    await this.makeProcessPrediction();
}

Внезапно предсказания займут намного больше времени, до 140 мс.Если я остановлю цикл и сделаю еще одно «одиночное» предсказание, это займет около 80 мсек.

Я надеялся, что кто-нибудь сможет объяснить мне, почему это происходит, и, возможно, что я могу сделать, чтобы ускорить предсказания.

Большое спасибо!

1 Ответ

0 голосов
/ 27 мая 2019

Попробуйте переместить загрузку графического процессора. Активный вызов данных прогноза в JavaScript с помощью data() позволяет накапливать некоторые обещания и, вероятно, засорить ваш канал графического процессора.

Переход ксинхронный метод dataSync() правильно обработает память графического процессора в основном потоке.Хотя это заблокирует взаимодействие с пользовательским интерфейсом, скорость должна быть такой же быстрой.

...