Полносвязный слой (Dense) является фундаментальным строительным блоком нейронных сетей, реализованных с помощью Keras.js. Он представляет собой слой, в котором каждый нейрон соединён со всеми нейронами предыдущего слоя. Это обеспечивает максимальную гибкость в обучении модели, позволяя захватывать сложные зависимости между признаками.
units — количество нейронов в слое. Определяет
размер выходного вектора слоя. Например, units: 128 создаёт
слой с 128 нейронами.
activation — функция активации, которая применяется к выходу каждого нейрона. Наиболее популярные:
relu — устраняет отрицательные значения, ускоряет
обучение глубоких сетей.sigmoid — сжимает значения в диапазон от 0 до 1,
используется для бинарной классификации.softmax — нормализует вектор выходов в вероятности,
полезна для многоклассовой классификации.useBias — логический параметр, включающий
смещение для нейронов (true по умолчанию). Смещение
помогает модели лучше подгонять данные, особенно при линейных
зависимостях.
kernelInitializer и biasInitializer — методы инициализации весов и смещений. Обычно применяются:
glorotUniform — стандартная инициализация для Dense
слоев.heNormal — оптимальна для слоев с ReLU активацией.Dense слой получает на вход тензор формы
(batch_size, input_dim), где input_dim —
количество признаков предыдущего слоя. На выходе формируется тензор
(batch_size, units).
Формула работы слоя:
output = activation(dot(input, W) + b)
где:
input — входной тензор,W — матрица весов размером
(input_dim, units),b — вектор смещений размером (units),activation — выбранная функция активации.Создание слоя с 64 нейронами и ReLU активацией:
const denseLayer = new KerasJS.layers.Dense({
units: 64,
activation: 'relu',
useBias: true,
kernelInitializer: 'glorotUniform',
biasInitializer: 'zeros'
});
Добавление слоя к модели:
const model = new KerasJS.Model({
layers: [
denseLayer
]
});
heNormal
инициализацию для ускорения сходимости.softmax и количество нейронов, равное
числу классов.dropout или регуляризации к весам
помогает избежать переобучения в глубоких Dense сетях.Dense слой может быть соединён с:
Классическая MLP для регрессии:
Input -> Dense(128, relu) -> Dense(64, relu) -> Dense(1, linear)
MLP для классификации на 10 классов:
Input -> Dense(256, relu) -> Dense(128, relu) -> Dense(10, softmax)
Каждый слой Dense выполняет линейное преобразование, затем активацию, обеспечивая нелинейность модели и способность решать сложные задачи распознавания.
Dense слой в Keras.js — это базовый, но чрезвычайно гибкий компонент для построения нейронных сетей в браузере, сочетающий простоту конфигурации с мощью WebGL ускорения и возможностью интеграции с современными фронтенд-технологиями.