Библиотека Synaptic предоставляет возможность сохранять и загружать нейронные сети в формате JSON. Это облегчает перенос сетей между проектами, хранение состояния сети и повторное использование обученных моделей. JSON-представление сети включает все необходимые данные о структуре, весах и параметрах обучения.
JSON-объект, создаваемый методом toJSON(), содержит
несколько ключевых разделов:
neurons – массив нейронов сети. Каждый нейрон представлен объектом со следующими полями:
bias — смещение нейрона (bias);squash — функция активации, используемая нейроном;layer — номер слоя, которому принадлежит нейрон;trace — информация для обучения методом обратного
распространения ошибки (если используется);activation — текущее значение активации нейрона;old — значение активации на предыдущем шаге (полезно
для рекуррентных сетей);connections — массив входных соединений.connections – массив соединений между нейронами. Каждый объект соединения содержит:
from — индекс нейрона-источника;to — индекс нейрона-приемника;weight — вес соединения;gater — индекс нейрона, который управляет гейтом (если
используется модуль гейтинга).layers – структура слоев сети, определяющая их размер и порядок. Пример:
"layers": {
"input": [0, 1, 2],
"hidden": [3, 4, 5],
"output": [6]
}
Здесь указаны индексы нейронов, принадлежащих каждому слою. Такой подход позволяет быстро восстанавливать топологию сети.
learningRate и другие параметры обучения могут быть включены при сохранении состояния сети, если это необходимо для продолжения обучения после загрузки.
Сохранение сети в JSON:
const synaptic = require('synaptic');
const { Layer, Network } = synaptic;
const inputLayer = new Layer(2);
const hiddenLayer = new Layer(3);
const outputLayer = new Layer(1);
inputLayer.project(hiddenLayer);
hiddenLayer.project(outputLayer);
const myNetwork = new Network({
input: inputLayer,
hidden: [hiddenLayer],
output: outputLayer
});
const networkJSON = myNetwork.toJSON();
console.log(JSON.stringify(networkJSON, null, 2));
Загрузка сети из JSON:
const loadedNetwork = Network.fromJSON(networkJSON);
Метод fromJSON полностью восстанавливает структуру сети,
включая слои, нейроны, веса соединений и функции активации.
trace и
old), чтобы уменьшить объем JSON.old) и трассах
(trace), что важно для корректного восстановления состояния
сети.Если в сети используются пользовательские функции активации,
необходимо при сохранении учитывать их идентификаторы. Synaptic
сохраняет название функции в поле squash, поэтому при
загрузке следует убедиться, что соответствующая функция доступна в
окружении. В противном случае потребуется регистрация функции перед
десериализацией.
JSON-сохранение удобно конвертировать в другие форматы:
Использование JSON-представления сети в Synaptic обеспечивает гибкость и безопасность при работе с нейронными сетями, делая процесс обучения и внедрения моделей более управляемым и воспроизводимым.