Сериализация нейронной сети — процесс преобразования структуры модели и её параметров в формат, который может быть сохранён на диск, передан по сети или восстановлен в другом сеансе работы программы. В библиотеке ConvNetJS сериализация осуществляется с помощью формата JSON, что обеспечивает простоту интеграции и универсальность хранения.
В ConvNetJS сеть представляется объектом класса
ConvNetJS.Net. Этот объект содержит все параметры,
необходимые для восстановления модели:
layers) — массив объектов,
каждый из которых описывает тип слоя, его размерности, параметры и
функции активации.filters,
biases) — массивы чисел, хранящие значения
обученных весов и смещений для каждого слоя.learning_rate,
momentum и др.) — параметры, использованные при
обучении сети.Метод toJSON() используется для создания
сериализованного представления сети:
var json = net.toJSON();
var jsonString = JSON.stringify(json);
toJSON() возвращает объект JavaScript, содержащий
полную структуру сети и её параметры.JSON.stringify преобразует объект в строку, пригодную
для сохранения в файл или отправки через HTTP.Для хранения сети используется стандартная работа с файлами или локальным хранилищем браузера:
// Сохранение в локальное хранилище
localStorage.setItem('mymodel', JSON.stringify(net.toJSON()));
// Загрузка из локального хранилища
var saved = localStorage.getItem('mymodel');
var json = JSON.parse(saved);
var net2 = new convnetjs.Net();
net2.fromJSON(json);
Метод fromJSON(json) восстанавливает объект
Net с точными параметрами и структурой исходной сети. После
вызова этой функции можно сразу выполнять прямой проход
(forward) и использовать сеть для
предсказаний.
Типичный объект JSON для ConvNetJS включает следующие ключи:
layers — массив слоёв, каждый объект слоя
содержит:
type — тип слоя (input, conv,
relu, fc, softmax и др.)out_sx, out_sy, out_depth —
размеры выхода слояfilters — массив фильтров для свёрточного слояbiases — смещения слояstride,
pad, activation)train_opts — параметры обучения
(learning_rate, momentum,
batch_size и др.)
Пример фрагмента JSON для полносвязного слоя:
{
"type": "fc",
"out_sx": 1,
"out_sy": 1,
"out_depth": 10,
"biases": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"filters": [
[0.01, -0.02, 0.03, ...],
...
]
}
Каждый слой содержит полные веса и смещения, что делает JSON самодостаточным для восстановления сети без доступа к исходному коду.
gzip) или хранение в бинарном
формате.train_opts), но не хранит историю
градиентов и оптимизаторов. Восстановленная сеть продолжит обучение с
текущих весов, но без полной истории предыдущих итераций.С помощью сериализации JSON ConvNetJS обеспечивает гибкость и лёгкость интеграции нейронных сетей в веб-приложения и учебные проекты.