Библиотека Brain.js предоставляет удобные
инструменты для создания и обучения нейронных сетей на JavaScript. При
обучении сетей часто возникает необходимость контролировать процесс
обучения: отслеживать ошибки, визуализировать динамику изменения функции
потерь и реагировать на определённые события. Для этого в Brain.js
используются параметры log и
callbackPeriod в методе
.train().
loglog позволяет вести запись процесса
обучения. Он может быть представлен либо функцией, либо логическим
значением true.
log: true При таком значении
библиотека автоматически выводит в консоль значения ошибки после каждой
итерации или через период, заданный callbackPeriod. Это
быстрый способ наблюдать за прогрессом без написания собственной
функции.
log: функция Если требуется более
гибкая обработка, можно передать свою функцию. Эта функция получает один
аргумент — объект с текущими параметрами обучения, среди которых:
error — текущая ошибка сети на обучающей выборке;iteration — номер текущей итерации;rate — используемый коэффициент обучения;time — время, затраченное на обучение до текущей
итерации.Пример использования функции для логирования:
const net = new brain.NeuralNetwork();
net.train(trainingData, {
iterations: 1000,
log: stats => {
console.log(`Итерация ${stats.iteration}, Ошибка: ${stats.error.toFixed(4)}`);
},
learningRate: 0.3
});
Здесь логирование позволяет видеть точное значение ошибки после каждой итерации или выбранного интервала.
callbackPeriodcallbackPeriod определяет интервал,
через который вызывается логирование или функция коллбэка. Значение
задаётся в количестве итераций.
callbackPeriod не задан, при
log: true или log: функция вызовы происходят
после каждой итерации по умолчанию.callbackPeriod: 10 означает, что логирование
или функция обратного вызова будут вызываться каждые 10 итераций.Использование вместе с функцией log:
const net = new brain.NeuralNetwork();
net.train(trainingData, {
iterations: 100,
log: stats => console.log(`Итерация ${stats.iteration}: ошибка ${stats.error}`),
callbackPeriod: 5,
learningRate: 0.2
});
В этом примере информация о состоянии сети выводится каждые 5 итераций, что уменьшает количество сообщений в консоли при большом количестве итераций.
log и callbackPeriodПараметры можно использовать совместно для тонкой настройки мониторинга процесса обучения:
callbackPeriod позволяет получать статистику с нужной
периодичностью.log можно передавать
данные в график, сохранять их в массив для последующего анализа или
выводить уведомления при достижении заданного порога ошибки.Пример сохранения прогресса обучения:
let progress = [];
net.train(trainingData, {
iterations: 500,
log: stats => progress.push({ iteration: stats.iteration, error: stats.error }),
callbackPeriod: 10,
learningRate: 0.1
});
console.log(progress);
В этом случае массив progress будет содержать данные о
каждом 10-м шаге обучения, позволяя строить графики или анализировать
динамику ошибки.
callbackPeriod, чтобы не перегружать
консоль.log может включать условия для отображения информации
только при определённых значениях ошибки.log: true помогает быстро убедиться, что сеть обучается и
ошибка уменьшается.Использование этих параметров делает процесс обучения более управляемым и позволяет создавать более точные и эффективные модели без лишнего вмешательства в основной код.