ConvNetJS — это чисто JavaScript-библиотека для построения, обучения и применения сверточных нейронных сетей. Одной из ключевых возможностей является использование предобученных моделей, что позволяет быстро запускать задачи распознавания без необходимости обучения с нуля.
Модель в ConvNetJS представляется объектом
Net, который включает три основных
компонента:
layers) — описание
архитектуры, включающее типы слоев, количество нейронов, фильтры
свертки, функции активации и параметры нормализации.params) — веса и
смещения всех слоев.trainer) — настройки
оптимизатора, скорость обучения, методы регуляризации.Сохранение модели выполняется методом
toJSON(), который возвращает
сериализованный объект, пригодный для передачи по сети или сохранения в
файл:
var json = net.toJSON();
Загрузка модели производится с помощью конструктора
Net() и метода
fromJSON():
var net2 = new convnetjs.Net();
net2.fromJSON(json);
Важно, что fromJSON() полностью восстанавливает как
архитектуру сети, так и текущие значения весов.
Предобученные модели обычно хранятся в формате JSON и могут быть
загружены из локальных файлов или через HTTP-запросы. Для загрузки по
URL удобно использовать fetch:
fetch('model.json')
.then(response => response.json())
.then(data => {
var net = new convnetjs.Net();
net.fromJSON(data);
console.log("Модель загружена и готова к работе");
});
При работе с большим числом параметров стоит учитывать размер JSON — некоторые модели могут достигать десятков мегабайт. В таких случаях оптимизация передачи через сжатие (gzip) значительно ускоряет загрузку.
После загрузки модели она готова к предсказаниям. Для этого создается
Vol, представляющий входные данные:
var x = new convnetjs.Vol([28,28,1]); // пример для изображения 28x28x1
// заполнение Vol значениями пикселей
var output = net.forward(x);
Метод forward() возвращает объект
Vol, содержащий значения выхода каждого нейрона последнего
слоя. Для классификации с использованием softmax обычно извлекается
индекс максимального значения:
var predictedClass = output.w.indexOf(Math.max(...output.w));
ConvNetJS не имеет встроенной системы версионирования моделей, поэтому необходимо следить, чтобы модель и библиотека были совместимы по версии. Любое изменение структуры слоев или API может сделать старую модель несовместимой.
Можно загружать и использовать несколько моделей одновременно. Каждая
модель хранится в отдельном экземпляре Net. Это удобно для
ансамблей или сравнительного анализа:
var netA = new convnetjs.Net();
netA.fromJSON(modelA);
var netB = new convnetjs.Net();
netB.fromJSON(modelB);
var resultA = netA.forward(input);
var resultB = netB.forward(input);
localStorage для ускорения повторной загрузки.Загрузка предобученных моделей в ConvNetJS позволяет ускорить интеграцию нейронных сетей в веб-приложения, минимизируя время на обучение и обеспечивая воспроизводимость экспериментов.