В библиотеке ml5.js обучение моделей машинного
обучения происходит асинхронно. Для управления процессом и отслеживания
прогресса используются коллбэки — функции, которые
вызываются автоматически в определённые моменты обучения. Два ключевых
события: whileTraining и
finishedTraining позволяют получать
информацию о ходе обучения и выполнять действия после завершения.
whileTrainingКоллбэк whileTraining вызывается на каждом шаге
обучения. Его основной задачей является мониторинг текущего
состояния модели, отслеживание ошибок (loss) и визуализация процесса. Он
принимает один аргумент — объект с данными о текущем шаге.
whileTraining:Пример использования:
const options = {
epochs: 50,
batchSize: 32,
learningRate: 0.01,
// Коллбэк для отслеживания процесса
whileTraining: function(info) {
console.log(`Эпоха: ${info.epoch}, Потери: ${info.loss.toFixed(4)}`);
}
};
const nn = ml5.neuralNetwork(options);
nn.train(trainingData, options);
В этом примере на каждой эпохе обучения выводится текущее значение потерь. Это позволяет отслеживать, стабилизируется ли модель или процесс застрял в локальном минимуме.
Рекомендации при использовании
whileTraining:
finishedTrainingКоллбэк finishedTraining вызывается один раз
после завершения обучения модели. Он предназначен для
выполнения действий с готовой моделью, например, для её сохранения или
запуска предсказаний на новых данных.
nn.train(trainingData, {
epochs: 50,
batchSize: 32,
finishedTraining: function() {
console.log("Обучение завершено");
nn.predict(newData, function(err, results) {
console.log(results);
});
}
});
Особенности finishedTraining:
nn.save().whileTraining и finishedTrainingЭти коллбэки работают совместно, обеспечивая полный контроль над процессом обучения:
whileTraining — непрерывный
мониторинг, визуализация, логирование.finishedTraining — однократное
действие после завершения, подготовка модели к использованию.Пример комплексного применения:
const nn = ml5.neuralNetwork({ task: 'regression', debug: true });
nn.addData({ x: 1 }, { y: 2 });
nn.addData({ x: 2 }, { y: 4 });
nn.normalizeData();
nn.train({
epochs: 100,
whileTraining: info => {
if (info.epoch % 10 === 0) {
console.log(`Эпоха ${info.epoch}, Потери ${info.loss.toFixed(3)}`);
}
},
finishedTraining: () => {
console.log("Модель готова");
nn.predict({ x: 5 }, (err, results) => {
console.log("Прогноз:", results[0].value);
});
}
});
В этом примере:
whileTraining, чтобы понимать динамику
сходимости.whileTraining помогает выявить проблемы: слишком
большой learning rate, плохое нормирование данных или несбалансированные
выборки.finishedTraining позволяет корректно
управлять асинхронностью: все действия с моделью начинаются только после
её готовности.whileTraining и finishedTraining формируют
основной механизм контроля обучения моделей в ml5.js.
whileTraining — инструмент мониторинга и анализа динамики,
finishedTraining — точка старта для использования готовой
модели. Их правильное применение позволяет организовать прозрачный,
управляемый процесс обучения и интегрировать модели в интерактивные
приложения.