Сериализация нейронной сети в JSON в библиотеке Synaptic позволяет сохранять архитектуру, веса и настройки сети для последующего восстановления и повторного использования. Это особенно полезно при разработке приложений, где требуется сохранение состояния сети между сессиями или передача её через сеть.
toJSON()Объект сети в Synaptic предоставляет метод
toJSON(), который возвращает
сериализованное представление сети в виде JSON-объекта. Этот объект
включает:
neurons — массив нейронов с их типами,
входами, выходами и функциями активации.connections — список соединений между
нейронами с указанием источника, цели и веса.inputs и
outputs — индексы входных и выходных
нейронов.trainer (если сеть обучалась через
Trainer) — информация о параметрах обучения и истории
тренировки.Пример сериализации сети:
const synaptic = require('synaptic');
const { Layer, Network } = synaptic;
// Создание сети с двумя слоями
let inputLayer = new Layer(2);
let hiddenLayer = new Layer(3);
let outputLayer = new Layer(1);
inputLayer.project(hiddenLayer);
hiddenLayer.project(outputLayer);
let myNetwork = new Network({
input: inputLayer,
hidden: [hiddenLayer],
output: outputLayer
});
// Сериализация в JSON
let networkJSON = myNetwork.toJSON();
console.log(JSON.stringify(networkJSON, null, 2));
Особенности метода toJSON():
Network.fromJSON()Для восстановления сети используется статический метод
Network.fromJSON(json), который принимает
объект JSON или строку JSON, возвращает экземпляр сети с теми же
нейронами, слоями и весами.
Пример восстановления:
// Восстановление сети из JSON
let restoredNetwork = Network.fromJSON(networkJSON);
// Проверка работы сети
let output = restoredNetwork.activate([1, 0]);
console.log(output);
Особенности восстановления:
Часто требуется не просто сериализовать в память, но и сохранять сеть
на диск. Для этого используется модуль fs:
const fs = require('fs');
// Сохранение сети
fs.writeFileSync('network.json', JSON.stringify(networkJSON, null, 2));
// Загрузка сети
let loadedJSON = JSON.parse(fs.readFileSync('network.json'));
let loadedNetwork = Network.fromJSON(loadedJSON);
Преимущества хранения в файле:
Synaptic поддерживает не только простые прямые сети, но и сложные архитектуры с несколькими слоями, петлями и рекуррентными связями. В JSON будут сохранены:
Пример рекуррентной сети:
const { Layer, Network } = require('synaptic');
let input = new Layer(2);
let hidden = new Layer(3);
let output = new Layer(1);
// Рекуррентное соединение
hidden.project(hidden);
input.project(hidden);
hidden.project(output);
let rnn = new Network({ input, hidden: [hidden], output });
let rnnJSON = rnn.toJSON();
let restoredRNN = Network.fromJSON(rnnJSON);
С помощью сериализации можно переносить рекуррентные сети без потери состояния и архитектуры.
fromJSON.Сериализация и восстановление сетей в Synaptic обеспечивает гибкое управление обученными моделями, поддержку хранения, передачи и повторного использования нейронных сетей любых размеров и конфигураций.