ConvNetJS предоставляет возможность полностью работать с нейронными сетями на стороне клиента, что особенно актуально для веб-приложений, где требуется интерактивная обработка данных без серверной зависимости. Ключевым аспектом является загрузка заранее обученной модели, её использование для предсказаний и дообучения на клиенте.
Модель в ConvNetJS хранится в формате JSON. Структура JSON включает:
fc,
conv, pool, softmax), размеры,
активации.Пример ключевых полей JSON:
{
"layers": [
{"type": "input", "out_sx": 28, "out_sy": 28, "out_depth": 1},
{"type": "conv", "sx": 5, "filters": 8, "stride": 1, "pad": 2, "activation": "relu"},
{"type": "softmax", "num_classes": 10}
],
"weights": [...],
"biases": [...]
}
Для загрузки модели необходимо создать объект сети
(convnetjs.Net) и затем инициализировать его конфигурацией
из JSON:
var net = new convnetjs.Net();
net.fromJSON(modelJSON);
Метод fromJSON восстанавливает полную структуру сети и
все обученные веса. После этого сеть готова к использованию для
прямого распространения или дальнейшего обучения.
В браузере JSON модели может быть загружен через AJAX-запрос или с
использованием fetch:
fetch('model.json')
.then(response => response.json())
.then(modelJSON => {
var net = new convnetjs.Net();
net.fromJSON(modelJSON);
// Сеть готова к работе
});
Особенность работы на клиенте — JSON может быть большим, поэтому важно учитывать время загрузки и парсинга. Для моделей более нескольких мегабайт рекомендуется использовать сжатие или хранить веса отдельно, подгружая их по частям.
После загрузки модели возможны следующие операции:
Прямое распространение (forward pass): Для предсказаний создается объект Vol (объект ConvNetJS, представляющий входное изображение или данные):
var x = new convnetjs.Vol(28, 28, 1); // пример для изображения 28x28
// заполняем x значениями пикселей
var output = net.forward(x);
console.log(output.w); // массив вероятностей для softmaxДальнейшее обучение: Если требуется дообучение модели на новых данных, можно создать объект тренера:
var trainer = new convnetjs.SGDTrainer(net, {learning_rate: 0.01, momentum: 0.9, batch_size: 10});
trainer.train(x, label);
При этом все веса корректно обновляются, используя уже загруженные значения как стартовую точку.
Для веб-приложений часто требуется динамическое обновление модели. Возможные подходы:
fetch и метод fromJSON.ConvNetJS работает полностью на JavaScript, что означает:
Сохранять модель с помощью метода toJSON() для
последующей загрузки:
var json = net.toJSON();
var jsonStr = JSON.stringify(json);Для изображений или данных с плавающей точкой использовать нормализацию перед подачей в сеть.
При дообучении на клиенте устанавливать малую скорость обучения и небольшие батчи, чтобы избежать резкого разрушения исходных весов.
Загрузка модели на клиенте в ConvNetJS позволяет создавать полностью автономные нейросетевые приложения, обеспечивая интерактивные предсказания и локальное обучение, что особенно ценно для веб-платформ и образовательных проектов.