Tensorflow.js的连续预测要比单一预测慢得多

时间:2019-02-06 18:47:02

标签: javascript asynchronous tensorflow.js

我有一个想要不断进行预测和处理预测的应用程序。我有一个可以进行预测并对结果进行处理的函数:

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 :(得分:0)

尝试移动GPU负载。使用data()主动将预测数据调用到JavaScript中可让您堆积一些希望,并可能阻塞GPU管道。

移至同步方法dataSync()将正确处理主线程中的GPU内存。虽然这会阻止您的UI交互,但速度应该一样快。