gpt4 book ai didi

javascript - TensorflowJS 异步预测

转载 作者:行者123 更新时间:2023-12-05 07:22:55 24 4
gpt4 key购买 nike

我一直在尝试找出如何以异步方式使用 tensorflowJS 执行预测。我所有的尝试都导致预测函数阻塞了我的代码。

查看 docs ,我看到大多数函数都被定义为异步函数并返回一个 promise ,例如 tf.loadLayersModel,它也可以异步地为我工作,没有任何阻塞。

然而,predict不返回 promise ,而是直接返回一个 tf.Tensor。我尝试将预测包装在自定义定义的异步函数中,例如:

compute = async(data) => {
var tensor = tf.tensor(data, [1, 100])
var prediction = this.model.predict(tensor)
return prediction.data()
}

但预测仍然阻止我的代码执行。

使用 TensorflowJS 进行异步推理的正确方法是什么?

最佳答案

问题是您不能将阻塞操作包装在 promise 中,因为这不仅仅是它的工作方式。请参阅这个虚构的示例(这基本上就是您正在做的):

const blockFunction = () => {
const endBlock = Date.now() + 2000
while(Date.now() < endBlock){}
}

const promisedBlocking = () => new Promise((res, rej) => {
const endBlock = Date.now() + 2000

while (Date.now() < endBlock) {}
return res('I cannot resolve before the blocking IO')
})

console.log('before blocking')
blockFunction()
console.log('after blocking')


console.log('before promised blocking')
promisedBlocking()
.then(console.log)
console.log('after promised blocking')

如果您将 tensorflow 与节点一起使用,您可以将函数调用包装在一个单独的文件中,并使用子进程调用它(参见 fork 方法),或者如果您在浏览器中使用 TF,则执行后台功能使用WebWorkers

关于javascript - TensorflowJS 异步预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56289685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com