This question already has answers here:
Using async requires async function, but my function is async
                                
                                    (4个答案)
                                
                        
                                去年关闭。
            
                    
我正在关注Tensorflow.js示例
但由于某些原因,浏览器抱怨await前面带有model.fit关键字。

错误信息:


  未捕获的SyntaxError:等待仅在异步函数中有效


我运行的示例代码:

const model = tf.sequential({
    layers: [tf.layers.dense({units: 1, inputShape: [10]})]
});
model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
for (let i = 1; i < 5 ; ++i) {
    const h = await model.fit(tf.ones([8, 10]), tf.ones([8, 1]), {
        batchSize: 4,
        epochs: 3
    });
    console.log("Loss after Epoch " + i + " : " + h.history.loss[0]);
}


我已验证model.fit返回Promise
我已经在Safari和Chrome上试用过。

我可以使用.then解决这个问题,但如果可以的话,我想使用await。
有人知道为什么吗?

最佳答案

await关键字仅在异步函数中可用,因此您必须将其包装为一个。

保持范围的最简单方法是:

(async () => {
   yourStuffHere
})();


它创建一个匿名的异步箭头函数,该函数在创建时会自行调用。

或者,如果您不需要整个过程都是异步的,则可以对异步函数使用“较旧的”方法,方法是使用.then()在异步函数完成后运行给定的回调函数:

model.fit(...).then(h => {
   console.log("Loss after Epoch " + i + " : " + h.history.loss[0]);
});

关于javascript - 等待Tensorflow.js的model.fit不工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50704818/

10-16 13:30