ConvNetJS — это библиотека на JavaScript, предназначенная для создания и обучения нейронных сетей прямо в браузере или на Node.js. Она поддерживает различные типы слоёв: полносвязные (fully connected), сверточные, pooling-слои и функции активации. Основу любого обучения составляет корректная конфигурация сети, подготовка данных и настройка параметров обучения.
Для создания простой полносвязной сети используется объект
convnetjs.Net. Он служит контейнером для слоёв и
обеспечивает методы прямого распространения сигнала (forward pass) и
обратного распространения ошибки (backward pass).
Пример структуры сети:
var net = new convnetjs.Net();
Далее необходимо добавить слои. Для полносвязной сети ключевые слои:
net.makeLayers([
{type: 'input', out_sx: 1, out_sy: 1, out_depth: 2}, // два входа
{type: 'fc', num_neurons: 5, activation: 'relu'}, // скрытый слой с 5 нейронами
{type: 'fc', num_neurons: 3, activation: 'relu'}, // второй скрытый слой
{type: 'softmax', num_classes: 3} // выходной слой для классификации на 3 класса
]);
Ключевые моменты:
out_sx, out_sy, out_depth
задают размерность входного вектора;num_neurons — количество нейронов в скрытом слое;activation — функция активации, чаще всего используется
'relu', 'sigmoid' или
'tanh';softmax для
классификации, regression для предсказания непрерывных
величин.Обучение сети управляется объектом convnetjs.SGDTrainer,
который использует стохастический градиентный спуск.
Пример настройки тренера:
var trainer = new convnetjs.SGDTrainer(net, {
learning_rate: 0.01,
momentum: 0.9,
batch_size: 10,
l2_decay: 0.001
});
Параметры:
learning_rate — скорость обучения, определяет шаг по
градиенту;momentum — ускорение для сглаживания колебаний
градиента;batch_size — размер мини-пакета для обновления
весов;l2_decay — коэффициент регуляризации для предотвращения
переобучения.ConvNetJS работает с объектами convnetjs.Vol, которые
представляют собой многомерные тензоры. Для полносвязной сети входной
вектор обычно одномерен.
Пример создания входного вектора:
var x = new convnetjs.Vol([0.5, -0.2]); // два признака
Целевая метка для классификации:
var y = 2; // принадлежит к третьему классу (нумерация с 0)
Обучение выполняется методом trainer.train, который
принимает входной вектор и целевую метку:
trainer.train(x, y);
Для серии итераций можно использовать цикл:
for (var i = 0; i < 1000; i++) {
var x = new convnetjs.Vol([Math.random(), Math.random()]);
var y = (x.w[0] + x.w[1] > 1) ? 1 : 0;
trainer.train(x, y);
}
Для получения предсказания используется метод
net.forward:
var output = net.forward(new convnetjs.Vol([0.3, 0.7]));
console.log(output.w); // вероятности классов для softmax
Метод forward возвращает объект Vol, где
поле w содержит массив значений выходных нейронов.
ConvNetJS поддерживает сериализацию структуры и весов сети в JSON:
var json = net.toJSON(); // экспорт в JSON
var net2 = new convnetjs.Net();
net2.fromJSON(json); // восстановление сети
Это позволяет сохранять обученные модели и использовать их повторно без повторного обучения.
0.01–0.05;l2_decay) снижает переобучение, особенно
при малом объёме данных;Полносвязные сети в ConvNetJS обеспечивают простую и наглядную платформу для экспериментов с нейронными сетями на JavaScript. Они позволяют изучать архитектуры, настраивать функции активации, исследовать гиперпараметры и получать практические навыки обучения сетей в реальном времени.