Synaptic — это JavaScript-библиотека для создания и обучения нейронных сетей. Она предоставляет гибкий интерфейс для построения сетей различной архитектуры, включая перцептроны, многослойные сети и рекуррентные сети. Подключение библиотеки зависит от среды выполнения: браузера или Node.js.
Для использования Synaptic в браузере библиотека доступна в виде
готового скрипта, который можно подключить через тег
<script>.
Использование CDN:
<script src="https://cdn.jsdelivr.net/npm/synaptic@1.1.4/dist/synaptic.min.js"></script>
После подключения через CDN все объекты библиотеки становятся
доступными через глобальный объект synaptic. Основные
компоненты:
synaptic.Layer — слой нейронной сети.synaptic.Network — сеть, состоящая из слоев.synaptic.Trainer — тренер для обучения сети.synaptic.Neuron — отдельный нейрон для кастомных
архитектур.Пример создания простой сети из одного скрытого слоя:
const { Layer, Network, Trainer } = 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 trainer = new Trainer(myNetwork);
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: 20000,
error: 0.005,
shuffle: true
});
В этом примере показано создание многослойной сети и обучение методом обратного распространения ошибки (backpropagation) на простейшей логической функции XOR.
В среде Node.js библиотека устанавливается через npm:
npm install synaptic
После установки библиотека подключается с помощью
require или import (в зависимости от поддержки
модулей ES6):
// CommonJS
const synaptic = require('synaptic');
const { Layer, Network, Trainer } = synaptic;
// ES6 modules
// import { Layer, Network, Trainer } from 'synaptic';
Структура работы с Node.js идентична браузерной версии. Основное
отличие — отсутствие глобального объекта synaptic; все
классы импортируются из модуля.
Пример создания сети в Node.js:
const { Layer, Network, Trainer } = require('synaptic');
const input = new Layer(3);
const hidden = new Layer(4);
const output = new Layer(2);
input.project(hidden);
hidden.project(output);
const network = new Network({
input: input,
hidden: [hidden],
output: output
});
const trainer = new Trainer(network);
trainer.train([
{ input: [0, 0, 1], output: [0, 1] },
{ input: [1, 0, 0], output: [1, 0] }
], {
rate: 0.2,
iterations: 10000,
error: 0.01
});
Глобальные объекты и области видимости В
браузере synaptic доступен глобально, поэтому можно сразу
создавать слои и сети. В Node.js требуется явный импорт классов через
require или import.
Совместимость с пакетными менеджерами Для
браузера можно использовать <script> и CDN либо
собрать проект с помощью bundler (Webpack, Parcel) и npm-пакета. Node.js
изначально рассчитан на работу с npm.
Асинхронность и производительность В браузере обучение сети на больших данных может блокировать поток интерфейса. Рекомендуется использовать Web Workers или серверную обработку через Node.js для тяжелых вычислений.
Модули и сборка проекта При работе с современными фронтенд-фреймворками (React, Vue, Angular) рекомендуется подключать Synaptic через npm и импортировать только необходимые компоненты для минимизации размера бандла.
Layer, Network,
Trainer) для снижения объема кода.