ConvNetJS — это библиотека на JavaScript для построения и обучения нейронных сетей непосредственно в браузере или на Node.js. Она поддерживает как полносвязные сети (Fully Connected, FC), так и сверточные сети (Convolutional Neural Networks, CNN), а также рекуррентные сети (Recurrent Neural Networks, RNN). Основное преимущество — возможность интерактивного обучения и визуализации моделей без необходимости установки сложных фреймворков.
В ConvNetJS нейронная сеть строится как последовательность слоев (Layers). Каждый слой имеет свои параметры, веса и функции активации. Основные типы слоев:
Каждый слой создаётся с помощью объекта конфигурации, например:
var layer = { type: 'fc', num_neurons: 100, activation: 'relu' };
Сеть создаётся через объект convnetjs.Net(). После
добавления слоев выполняется инициализация весов:
var net = new convnetjs.Net();
net.addLayer({ type: 'input', out_sx: 28, out_sy: 28, out_depth: 1 });
net.addLayer({ type: 'conv', sx: 5, filters: 8, stride: 1, pad: 2, activation: 'relu' });
net.addLayer({ type: 'pool', sx: 2, stride: 2 });
net.addLayer({ type: 'fc', num_neurons: 10, activation: 'softmax' });
net.initialize();
'relu', 'sigmoid', 'tanh' и
'softmax'.Обучение в ConvNetJS осуществляется с помощью объекта
Trainer. Он принимает параметры оптимизации и скорость
обучения:
var trainer = new convnetjs.Trainer(net, {
method: 'sgd',
learning_rate: 0.01,
momentum: 0.9,
batch_size: 20,
l2_decay: 0.0001
});
Для обучения сети используется метод train:
trainer.train(x, y);
где x — входной массив данных (тензор), y —
правильный класс или вектор значений.
ConvNetJS использует объект Vol для представления данных
и градиентов. Vol — это трёхмерный массив
width × height × depth. Создание:
var input = new convnetjs.Vol(28, 28, 1);
input.set(0, 0, 0, 1.0); // установка значения одного пикселя
Все операции, включая свёртки и пуллинг, производятся над объектами
Vol. Градиенты также хранятся в Vol.d после
обратного распространения ошибки.
Пример прямого прохода:
var output = net.forward(input);
console.log(output.w); // массив предсказанных значений
Обратный проход вызывается через trainer.train или
net.backward для отдельного примера.
ConvNetJS поддерживает визуализацию сети в браузере. Каждый слой можно отобразить, показывая фильтры, карты активаций и градиенты. Использование:
var layer = net.layers[1]; // доступ к сверточному слою
console.log(layer.filters[0].w); // фильтр первого нейрона
Визуализация позволяет анализировать, какие признаки выделяет сеть на разных слоях.
ConvNetJS идеально подходит для интерактивных приложений, где необходимо:
Ключевой подход — строить слои, конфигурировать тренер и работать с
тензорами Vol для прямого и обратного распространения. Этот
цикл обеспечивает полное управление нейронной сетью в рамках
JavaScript-экосистемы.
Каждая настройка напрямую влияет на скорость и качество обучения, а также на поведение модели при реальных данных.