Tensorflow JS первая задержка прогнозирования - PullRequest
1 голос
/ 25 марта 2020

После успешной загрузки в модель Tensorflow JS первое предсказание всегда имеет задержку в 1-2 секунды. Это происходит только для ОЧЕНЬ первого прогноза во всем мире. Скажем, у меня есть 2 модели, и я прогнозирую с помощью model 1, а затем с model 2, я получу задержку при первом прогнозе с model 1, но НЕ с model 2 s первым прогнозом.

const prediction = model.predict(X[m][i]).dataSync()[0]

Я создаю все свои входные тензоры до того, как прогнозирую, поэтому задержка должна исходить исключительно от компонента прогнозирования. Я предполагаю, что происходит какая-то инициализация. Как убрать задержку / инициализацию перед первым прогнозом?

1 Ответ

1 голос
/ 25 марта 2020

Самое первое предсказание должно инициализировать веса на бэкэнде. Прогрев модели часто рекомендуется для предотвращения задержки во время первого предсказания. Разминка - это просто прогноз с фиктивными данными, такими как 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);
...