В Keras.js колбэки представляют собой объекты, которые позволяют контролировать выполнение модели на различных этапах её обучения и предсказаний. Они являются ключевым инструментом для мониторинга, изменения поведения обучения и интеграции внешних процессов без вмешательства в основной код тренировки.
Колбэки в Keras.js выполняют несколько важных функций:
Каждое из этих применений реализуется через специальные методы колбэков, вызываемые на разных этапах жизненного цикла обучения.
Жизненный цикл колбэка в Keras.js тесно связан с процессом обучения модели и разделяется на несколько ключевых стадий:
Инициализация (onInit) Вызывается
при создании колбэка и подключении его к модели. На этом этапе можно
определить внутренние переменные и подготовить структуру для хранения
истории метрик.
Начало обучения (onTrainBegin)
Срабатывает перед первой эпохой обучения. Используется для подготовки
логов, сброса счетчиков или записи начальных параметров модели.
Начало эпохи (onEpochBegin) Метод
вызывается перед каждой новой эпохой. Можно использовать для изменения
скорости обучения, создания временных метрик или очистки промежуточных
данных.
После батча (onBatchEnd) Вызывается
после обработки каждого батча данных. Полезен для отслеживания прогресса
на уровне батчей, логирования промежуточных метрик и динамической
корректировки параметров оптимизации.
После эпохи (onEpochEnd)
Срабатывает после завершения каждой эпохи. На этом этапе обычно
выполняется раннее прекращение обучения, сохранение модели и запись
итоговых метрик эпохи.
Окончание обучения (onTrainEnd)
Метод вызывается после завершения всех эпох обучения. Используется для
финальной очистки, вывода итоговой статистики или сохранения состояния
модели.
EarlyStopping – завершает обучение,
если наблюдаемая метрика перестала улучшаться заданное количество эпох
(patience).ModelCheckpoint – сохраняет веса
модели на диск после каждой эпохи или только при улучшении выбранной
метрики.LearningRateScheduler – изменяет
скорость обучения по заранее определенному графику.CSVLogger – записывает историю
обучения в CSV-файл для последующего анализа.Каждый колбэк реализует только необходимые методы жизненного цикла, что позволяет легко комбинировать несколько колбэков без избыточного кода.
Keras.js поддерживает создание собственных колбэков через наследование базового класса или объект с методами жизненного цикла:
class CustomCallback {
onTrainBegin(logs) {
console.log("Начало обучения");
}
onEpochEnd(epoch, logs) {
console.log(`Эпоха ${epoch} завершена, loss: ${logs.loss}`);
}
onTrainEnd(logs) {
console.log("Обучение завершено");
}
}
Такая структура позволяет полностью контролировать процесс обучения, реагируя на любые события и интегрируя сторонние инструменты, например визуализацию или уведомления.
В среде браузера важно учитывать:
ModelCheckpoint требует
взаимодействия с API файлов браузера или IndexedDB.Использование колбэков в Keras.js обеспечивает гибкость и расширяемость обучения нейронных сетей, позволяя реализовать сложные сценарии мониторинга и управления без изменения основной модели.
Колбэки являются неотъемлемой частью эффективной работы с Keras.js, обеспечивая прозрачное управление жизненным циклом обучения и повышая гибкость реализации нейросетевых приложений.