Keras.js — это библиотека для запуска предобученных моделей Keras в среде браузера на JavaScript. При работе с этой библиотекой важно учитывать специфику ошибок, которые могут возникать как при загрузке модели, так и во время выполнения инференса. Надёжная обработка ошибок обеспечивает стабильность работы приложений и предотвращает некорректное поведение при нестандартных условиях.
1. Некорректный путь к файлу модели
При загрузке модели через KerasJS.Model указанный путь к
файлу JSON или бинарным весам должен быть корректным. В случае ошибки
пути или отсутствия файла возникает исключение:
const model = new KerasJS.Model({ filepaths: { model: 'model.json' } });
model.ready()
.then(() => console.log('Модель загружена'))
.catch(err => console.error('Ошибка загрузки модели:', err));
Особенности обработки:
.catch() для перехвата ошибок
загрузки.2. Несовместимые версии модели и весов
Keras.js строго проверяет соответствие JSON-модели и бинарных весов.
Несоответствие может вызвать TypeError или
RuntimeError. Это особенно актуально при переносе моделей
из Python Keras в браузер:
model.save('model.json')).3. Ошибки формата модели
JSON-модель должна содержать корректные слои и конфигурацию. Любые пропущенные или некорректные поля приведут к ошибке парсинга:
SyntaxError возникает при некорректной структуре
JSON.ReferenceError при отсутствии нужных функций активации
или слоёв.Рекомендации:
JSON.parse.После успешной загрузки модели ошибки могут возникать при передаче данных или выполнении вычислений.
1. Некорректный формат входных данных
Keras.js ожидает вход в виде объектов типа Float32Array
или ndarray с точной размерностью, соответствующей
конфигурации модели. Несоответствие размерности приводит к
Error: input shape mismatch.
Пример правильной передачи данных:
const inputData = new Float32Array([0.1, 0.2, 0.3, 0.4]);
model.predict({ input: inputData })
.then(outputData => console.log(outputData))
.catch(err => console.error('Ошибка инференса:', err));
Ключевые моменты:
predict.Float32Array, избегать обычных
массивов JavaScript.2. Ошибки из-за отсутствия GPU или WebGL
Keras.js поддерживает WebGL для ускорения инференса. Если контекст WebGL недоступен, библиотека может выбросить исключение при создании тензоров на GPU. В таких случаях возможны два варианта:
const model = new KerasJS.Model({ filepaths: { model: 'model.json' }, gpu: true });
model.ready()
.then(() => model.predict({ input: inputData }))
.catch(err => {
if (err.message.includes('WebGL')) {
console.warn('WebGL недоступен, переключение на CPU');
model.gpu = false;
return model.predict({ input: inputData });
}
});
3. Ошибки вычислений внутри модели
Во время инференса могут возникать исключения из-за:
BatchNormalization.Практические меры:
predict для перехвата
непредвиденных ошибок.Для отладки и мониторинга ошибок полезно внедрять централизованное логирование:
info, warn,
error) для различения типов событий.ready,
predict) должна иметь .catch() для надёжного
перехвата ошибок.Обеспечение стабильной работы Keras.js требует внимательной обработки всех уровней ошибок — от загрузки файлов до выполнения вычислений на GPU или CPU. Правильная архитектура обработки исключений повышает надёжность веб-приложений и предотвращает неожиданные сбои.