Kераs.js представляет собой JavaScript-обёртку для использования
моделей, обученных в Keras, в браузере. Работа с ней строится на
понимании структуры слоёв и ключевых параметров, определяющих поведение
нейронной сети. Рассмотрим три фундаментальных параметра:
units, activation и
input_shape.
units —
количество нейронов в слоеПараметр units определяет количество выходных нейронов в
слое. В полносвязных слоях (Dense) каждый нейрон получает
входные данные от всех нейронов предыдущего слоя и производит отдельное
преобразование.
Особенности использования:
Определяет размерность выхода слоя. Например,
слой Dense с units: 64 будет возвращать массив
длиной 64 для каждого входного примера.
Влияет на мощность модели. Увеличение
units повышает способность слоя обучать сложные
зависимости, но одновременно увеличивает количество параметров и риск
переобучения.
Применение в Keras.js:
const denseLayer = {
class_name: "Dense",
config: {
units: 128
}
};Соотношение с предыдущим слоем: Важным моментом
является совместимость units с размерностью входа: если
входной слой имеет 256 признаков, а units = 128, то матрица
весов будет размером (256, 128).
activation —
функция активации нейроновПараметр activation задаёт нелинейное преобразование,
применяемое к выходам нейронов. Выбор функции активации критически
влияет на способность сети моделировать сложные зависимости.
Основные функции активации в Keras.js:
relu (Rectified Linear Unit)
Простая и эффективная функция: f(x) = max(0, x).
Применяется в большинстве скрытых слоёв для ускорения
сходимости.
sigmoid Преобразует значение в
диапазон (0, 1). Используется для бинарной
классификации.
softmax Применяется на выходных
слоях многоклассовой классификации. Преобразует вектор выходов в
вероятностное распределение.
tanh Выходы находятся в диапазоне
[-1, 1]. Иногда полезна при работе с нормализованными
данными.
Пример конфигурации слоя:
const denseLayer = {
class_name: "Dense",
config: {
units: 64,
activation: "relu"
}
};
Особенности работы в Keras.js:
input_shape —
форма входных данныхinput_shape задаёт размерность входных данных слоя. Этот
параметр особенно важен для первого слоя сети, так как Keras.js не
вычисляет его автоматически в рантайме браузера.
Принципы использования:
Одномерные данные: Для вектора признаков длиной 100:
input_shape: [100]Изображения: Для изображений размером 28x28 пикселей с одним каналом:
input_shape: [28, 28, 1]Последовательности: Для текстовых последовательностей длиной 50 слов с векторизацией 300:
input_shape: [50, 300]Применение в первом слое Dense:
const inputLayer = {
class_name: "Dense",
config: {
units: 128,
activation: "relu",
input_shape: [256]
}
};
Особенности:
input_shape указывается только в первом слое
модели. Последующие слои автоматически определяют размерность входа по
выходу предыдущего слоя.input_shape и фактических данных
приводит к ошибкам выполнения в браузере.units определяет, сколько признаков будет на выходе
слоя.activation накладывает нелинейность на эти
признаки.input_shape гарантирует корректное соответствие входных
данных размерности слоя.Эффективная настройка этих трёх параметров позволяет управлять архитектурой сети, её мощностью и скоростью сходимости, особенно при переносе модели в браузер через Keras.js.
relu для скрытых слоёв, sigmoid или
softmax для выхода.units: слишком большое
значение замедляет работу и увеличивает память, слишком маленькое —
снижает точность модели.Использование этих параметров в Keras.js требует точного соответствия конфигурации исходной модели Keras, что обеспечивает корректную работу предсказаний в веб-среде.