Javascript 在tensorflow.js中,我应该使用什么来代替tensor.dataSync()来获取预测值?

Javascript 在tensorflow.js中,我应该使用什么来代替tensor.dataSync()来获取预测值?,javascript,tensorflow,tensorflow.js,Javascript,Tensorflow,Tensorflow.js,我目前正在tensorflow js中尝试线性回归。我将x值输入到预测函数中,并使用dataSync()获得y值。是否有一种方法可以异步执行此操作,以便更快?通过在画布上绘制点来输入x值 下面是代码的一部分: function setup() { createCanvas(1000, 600); canvas.style.border = '1px solid blue'; m = tf.variable(tf.scalar(random(0))); b = t

我目前正在tensorflow js中尝试线性回归。我将x值输入到预测函数中,并使用dataSync()获得y值。是否有一种方法可以异步执行此操作,以便更快?通过在画布上绘制点来输入x值

下面是代码的一部分:

function setup() {
    createCanvas(1000, 600);
    canvas.style.border = '1px solid blue';

    m = tf.variable(tf.scalar(random(0)));
    b = tf.variable(tf.scalar(random(0)));

}

 let ys = tf.tidy(() => predict(curveX));
        let curveY = ys.dataSync();
        ys.dispose();

异步代码执行速度不快,同步代码在等待I/O时停止处理,异步代码则相反

tf.dataSync()从tensor同步下载值,而tf.data()从tf.tensor()异步下载值并返回一个承诺,因此这就是您要寻找的

const getPrediction = async (curveX) => {
    const prediction = predict(curveX)
    return await prediction.data()
}


是否可以使用tf.data()立即访问预测值?是的,它的工作原理与tf.dataSync()相同,但它是异步的,所以将其包装在异步函数中并等待结果。等等,抱歉,我在这里不太清楚。这是否可行:让curveY2=async()=>{return wait ys.dataSync();}curveY2.then();我把x值放在这里了吗?我已经编辑了答案,包括它的示例代码。它应该可以工作,尽管您没有包括predict函数(),我假设它只是从模型返回预测。