Для работы с библиотекой Synaptic в среде Node.js сначала необходимо установить пакет через npm:
npm install synaptic
После установки подключение производится стандартным способом:
const synaptic = require('synaptic');
const { Layer, Network, Trainer } = synaptic;
Layer используется для создания слоёв нейронной сети,
Network — для формирования сети в целом, а
Trainer — для обучения сети на заданных данных.
Сеть Synaptic состоит из трёх основных типов слоёв:
input) — принимает
данные.hidden) — осуществляют
вычисления и преобразования данных.output) — возвращает
результат работы сети.Пример создания простой сети:
const inputLayer = new Layer(3);
const hiddenLayer = new Layer(4);
const outputLayer = new Layer(2);
inputLayer.project(hiddenLayer);
hiddenLayer.project(outputLayer);
const myNetwork = new Network({
input: inputLayer,
hidden: [hiddenLayer],
output: outputLayer
});
Для переноса или повторного использования сети Synaptic позволяет
сериализовать её в JSON. Сериализация выполняется методом
.toJSON():
const networkJSON = myNetwork.toJSON();
const fs = require('fs');
fs.writeFileSync('network.json', JSON.stringify(networkJSON));
Загрузка модели выполняется обратным процессом:
const rawData = fs.readFileSync('network.json', 'utf8');
const parsedData = JSON.parse(rawData);
const loadedNetwork = Network.fromJSON(parsedData);
Ключевой момент: при загрузке сети важно, чтобы структура JSON точно соответствовала структуре исходной сети. Любые изменения в ключах или типах данных приведут к ошибкам или некорректной работе сети.
После загрузки сети из файла можно использовать её так же, как и исходную:
const input = [0.5, 0.2, 0.8];
const output = loadedNetwork.activate(input);
console.log(output);
Метод activate принимает массив чисел длиной, равной
количеству нейронов входного слоя, и возвращает массив значений
выходного слоя.
Если требуется продолжить обучение сети после загрузки:
const trainer = new Trainer(loadedNetwork);
const trainingSet = [
{ input: [0,0,1], output: [1,0] },
{ input: [1,1,0], output: [0,1] }
];
trainer.train(trainingSet, {
rate: 0.1,
iterations: 2000,
error: 0.005,
shuffle: true,
log: 100
});
Параметры тренера:
rate — скорость обучения (learning rate).iterations — максимальное количество итераций.error — целевой уровень ошибки.shuffle — перемешивание обучающих примеров.log — частота вывода информации о процессе
обучения.При загрузке моделей с большим количеством слоёв и нейронов стоит учитывать:
fs.promises.Пример асинхронной загрузки:
const fs = require('fs').promises;
async function loadNetwork(path) {
const rawData = await fs.readFile(path, 'utf8');
const parsedData = JSON.parse(rawData);
return Network.fromJSON(parsedData);
}
(async () => {
const net = await loadNetwork('network.json');
console.log(net.activate([0.1, 0.9, 0.5]));
})();
Эти методы обеспечивают безопасное и масштабируемое использование нейронных сетей Synaptic в проектах на Node.js, позволяя сохранять модели, переносить их между средами и продолжать обучение без потери данных.