Пакетная нормализация — один из ключевых методов
ускорения обучения нейронных сетей и стабилизации процесса градиентного
спуска. В Keras.js эта техника реализуется с использованием слоя
BatchNormalization, который применяется к активациям
предыдущего слоя.
BatchNormalization нормализует входные данные слоя по батчу, приводя их распределение к нулевому среднему и единичной дисперсии:
[ = ]
где:
После нормализации применяется линейное преобразование:
[ y = + ]
где () и () — обучаемые параметры, позволяющие восстановить исходное распределение при необходимости.
Keras.js позволяет загружать модели, обученные в Python Keras, и
выполнять инференс на стороне клиента. Слой
BatchNormalization используется в модели так же, как в
Python, но необходимо учитывать ограничения среды Jav * aScript:
const KerasJS = require('keras-js');
// загрузка модели с BatchNormalization
const model = new KerasJS.Model({
filepath: 'model.bin',
gpu: true
});
// подготовка входных данных
const inputData = {
input_1: new Float32Array([/* данные */])
};
// выполнение инференса
model.ready().then(() => {
model.predict(inputData).then(outputData => {
console.log(outputData);
});
});
В Keras.js слой BatchNormalization не
обучается на стороне клиента — все параметры (), (), () и ()
загружаются из обученной модели. Это ключевой момент при переносе
моделей из Python.
axis — ось, по которой нормализуются данные. Для
полносвязных слоев обычно axis=-1.momentum — коэффициент сглаживания для вычисления
скользящей оценки среднего и дисперсии.epsilon — малая константа для предотвращения деления на
ноль.center — если true, добавляется смещение
().scale — если true, применяется
масштабирование ().Пример конфигурации слоя:
{
class_name: 'BatchNormalization',
config: {
axis: -1,
momentum: 0.99,
epsilon: 0.001,
center: true,
scale: true
}
}
axis.BatchNormalization в Keras.js позволяет ускорить инференс на фронтенде, уменьшая численные колебания активаций и повышая точность предсказаний. GPU-ускорение через WebGL делает применение слоя эффективным даже для сложных сверточных сетей.
training режим не поддерживается на стороне
клиента.BatchNormalization является фундаментальным компонентом современных нейронных сетей и обеспечивает баланс между стабильностью, скоростью и качеством инференса при переносе моделей в JavaScript через Keras.js.