我在Keras (20个单元)训练了一个简单的双向LSTM网络,并通过
tfjs.converters.save_keras_model(model, 'myModel')模型的大小为53 is。在我的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秒的时间才能载入模型,这很好。但困扰我的是,每次预测()也需要5-6秒。每次都是这样。对于我的用例,我需要预测速度非常快,1秒或更短。
我的问题是:这正常吗?还是我的代码出了什么问题?
编辑:这里有一个代码库:https://codepen.io/anon/pen/XygXRP
顺便说一句,model.predict阻塞了UI --我怎么才能阻止这种情况呢?
发布于 2018-11-25 13:14:59
您的UI正被阻塞,因为您没有要求线程等待预测的结果,这意味着它是同步运行而不是异步运行。您可以通过使用await关键字(例如,var pred = await model.predict(input) )来修复这个问题。
您的其余代码似乎很好,因此看起来延迟来自您的实际模型,因为我看到我的CPU几乎没有被征税来运行您的模型。
值得阅读tensorflowjs博客帖子,因为它们提供了如何提高模型的效率以在浏览器中进行更快推理的示例。
发布于 2021-09-02 03:36:02
做一件简单的事情:使用'webgl‘后端来获得更好的向量/矩阵操作性能,而不是'cpu’,我认为它是原生Javascript,而且AF比较慢。
https://stackoverflow.com/questions/53309394
复制相似问题