Библиотека Synaptic предоставляет мощные инструменты для создания и обучения нейронных сетей на стороне сервера с использованием Node.js или локально в среде разработки. Одним из ключевых преимуществ является возможность переноса обученной модели в браузер для дальнейшего использования без повторного обучения.
Каждая нейронная сеть в Synaptic состоит из нейронов, слоёв и соединений между ними. При экспорте модели сохраняются:
Все эти данные представлены в виде стандартного JSON-объекта, что делает их удобными для передачи между средами.
Для сохранения сети в формате JSON используется метод
toJSON():
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 exportedModel = myNetwork.toJSON();
const fs = require('fs');
fs.writeFileSync('model.json', JSON.stringify(exportedModel, null, 2));
Ключевые моменты:
toJSON() возвращает объект, включающий все параметры
сети.JSON.stringify с отступами делает файл
читаемым для человека и удобным для редактирования при
необходимости.В браузере можно восстановить модель с помощью конструктора
Network.fromJSON():
import { Network } from 'synaptic';
// Предположим, что modelData загружен через fetch или импортирован
const modelData = await fetch('model.json').then(res => res.json());
const network = Network.fromJSON(modelData);
// Использование сети для предсказаний
const output = network.activate([0.5, 0.8]);
console.log(output);
Особенности:
fromJSON() автоматически воссоздаёт слои, нейроны
и соединения.Для динамических веб-приложений модель может храниться на сервере и передаваться клиенту по HTTP:
toJSON() модель сериализуется в JSON.Network.fromJSON() сеть
восстанавливается и готова к использованию.Пример сервера на Node.js с использованием Express:
const express = require('express');
const fs = require('fs');
const app = express();
app.get('/model', (req, res) => {
const modelJson = fs.readFileSync('model.json', 'utf-8');
res.type('application/json').send(modelJson);
});
app.listen(3000, () => console.log('Server running on port 3000'));
На клиенте:
async function loadModel() {
const response = await fetch('/model');
const modelData = await response.json();
const network = Network.fromJSON(modelData);
return network;
}
loadModel().then(network => {
const result = network.activate([0.2, 0.7]);
console.log(result);
});
После загрузки модели в браузере её можно использовать для: