Tensorflow JS第一次预测延迟

Har*_*art 1 javascript tensorflow tensorflow.js

一旦我成功加载 TensorflowJS 模型,第一个预测总是有 1-2 秒的延迟。这仅发生在全球第一次预测时。假设我有 2 个模型,我用 进行预测,model 1然后用 进行预测model 2,我将得到第一个预测的延迟,model 1但不是model 2第一个预测。

const prediction = model.predict(X[m][i]).dataSync()[0]
Run Code Online (Sandbox Code Playgroud)

我在预测之前创建所有输入张量,因此延迟必须完全来自预测组件。我假设正在发生某种初始化。如何在第一次预测之前消除延迟/初始化?

edk*_*ked 5

第一个预测必须初始化后端的权重。通常建议对模型进行预热,以防止首次预测期间出现延迟。预热只是使用虚拟数据(例如 )的tf.ones预测tf.random。这种预测的输出并不重要。但是进行这样的预测会使所有权重张量都被初始化,从而使模型更快地为下一个预测做好准备。

const model = await tf.loadLayersModel(modelUrl);

// Warmup the model before using real data.
const warmupResult = model.predict(tf.zeros(inputShape));
warmupResult.dataSync(); // we don't care about the result
warmupResult.dispose();

// Now we can use the model for real predictions
// The second predict() will be much faster
const result = model.predict(userData);
Run Code Online (Sandbox Code Playgroud)