В библиотеке Synaptic для JavaScript объект Network
является основной структурой, позволяющей создавать, обучать и
использовать нейронные сети. Одной из ключевых возможностей является
сохранение состояния сети и его последующее восстановление. Для этих
целей используется метод Network.fromJSON.
Сеть Synaptic может быть представлена в формате JSON с помощью метода
toJSON. Этот JSON-объект содержит всю необходимую
информацию для восстановления сети:
neurons — массив нейронов сети,
каждый нейрон представлен объектом с полями:
bias — смещение нейрона;activation — текущее значение активации;trace — информация для обучения, в частности для
методов вроде backpropagation или
hebbian.connections — массив связей между
нейронами, содержащий:
from и to — индексы нейронов в массиве
neurons;weight — вес связи;gater — индекс нейрона, который регулирует вес (если
используется гейтирование).inputs и outputs —
массивы индексов нейронов входного и выходного слоёв.
Пример структуры JSON:
{
"neurons": [
{"bias":0,"activation":0,"trace":{}},
{"bias":0.1,"activation":0,"trace":{}}
],
"connections":[
{"from":0,"to":1,"weight":0.5,"gater":null}
],
"inputs":[0],
"outputs":[1]
}
fromJSONМетод Network.fromJSON(json) позволяет создать полностью
функциональную сеть из ранее сериализованного JSON-объекта. Этот процесс
включает:
Network с точным количеством
нейронов.bias и
trace.Пример использования:
const synaptic = require('synaptic');
const { Network } = synaptic;
// JSON, полученный из сети
const savedNetworkJSON = {
neurons: [ ... ],
connections: [ ... ],
inputs: [0, 1],
outputs: [2]
};
// Восстановление сети
const restoredNetwork = Network.fromJSON(savedNetworkJSON);
// Использование сети
const output = restoredNetwork.activate([1, 0]);
console.log(output);
После восстановления сеть полностью сохраняет способность к активации
и обучению, включая гейтеры и предыдущие состояния нейронов, если они
были сохранены в trace.
backpropagation или hebbian,
информация об обучении сохраняется в полях trace. При
восстановлении через fromJSON сеть может продолжить
обучение с того же состояния.fromJSON идентична
оригинальной.Метод fromJSON широко используется для:
const { Network, Trainer } = require('synaptic');
// Загрузка сохранённой сети
const networkJSON = require('./savedNetwork.json');
const network = Network.fromJSON(networkJSON);
// Создание тренера для продолжения обучения
const trainer = new Trainer(network);
// Продолжение обучения на новых данных
trainer.train([
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] }
], {
rate: 0.1,
iterations: 2000,
log: 100
});
// Проверка работы сети
console.log(network.activate([1, 0])); // Предсказание после дообучения
trace, иначе восстановленная сеть может вести себя
некорректно.fromJSON не требует создания нового экземпляра
через new Network, он автоматически строит полную
структуру.Метод Network.fromJSON делает библиотеку Synaptic мощным
инструментом для создания переносимых и долговечных моделей нейронных
сетей, обеспечивая полное восстановление структуры и состояния сети без
потери информации о тренировке и топологии.