【问题标题】:TensorFlow.js speed in the browserTensorFlow.js 在浏览器中的速度
【发布时间】:2019-04-17 23:05:17
【问题描述】:

我已经在 Keras(20 个单元)中训练了一个简单的双向 LSTM 网络,并通过

导出了模型
tfjs.converters.save_keras_model(model, 'myModel')

模型大小为 53kb。在我的 JavaScript 应用程序中,我像这样加载模型

var model;
async function loadModel() {;
    model = await tf.loadModel('https://example.com/myModel.json');
}

然后我运行我的预测

async function predict(input) {
    var pred = model.predict(input);
    ...
}

加载模型需要 5-6 秒,这很好。但困扰我的是每次调用 predict() 也需要 5-6 秒。每次。对于我的用例,我需要非常快的预测,1 秒或更短。

我的问题是:这正常吗?还是我的代码有问题?

编辑:这是一个代码笔:https://codepen.io/anon/pen/XygXRP

顺便说一句,model.predict 阻塞了 UI - 我该如何防止呢?

【问题讨论】:

  • 它是 Surface Book 2,Intel i7,1.90GHz 2.11 GHz,Chrome 上的 16GB RAM(最新版本)
  • 我刚测了一下,python中的model.predict()大概需要300毫秒
  • 能否请您在codepen.io 上创建一个有效的sn-p 或分享一个要点?
  • 你可以考虑在这里创建一个问题github.com/tensorflow/tfjs/issues

标签: javascript performance tensorflow tensorflow.js


【解决方案1】:

您的 UI 被阻塞是因为您没有要求线程等待预测结果,这意味着它正在同步运行而不是异步运行。您可以使用 await 关键字来解决此问题,例如var pred = await model.predict(input).

您的代码的其余部分似乎没问题,因此延迟似乎来自您的实际模型,因为我看到我的 CPU 几乎没有负担运行您的模型。

值得阅读 tensorflowjs 博客 post,因为它们为您提供了如何提高模型效率以在浏览器中进行更快推理的示例。

【讨论】:

    【解决方案2】:

    做一件简单的事:使用“webgl”后端来获得更好的向量/矩阵运算性能,而不是“cpu”,我认为它是原生 Javascript,AF 很慢。

    【讨论】:

      猜你喜欢
      • 2011-01-04
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 2012-10-12
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多