Библиотека Synaptic предоставляет гибкий инструмент для создания и
обучения нейронных сетей в JavaScript. Одной из ключевых возможностей
является возможность извлечения “самостоятельной” функции вычисления из
обученной сети с помощью метода Network.standalone. Этот
подход позволяет отделить логику нейросети от самой библиотеки, что
особенно полезно для интеграции в другие приложения или среды, где
Synaptic не установлен.
Network.standaloneМетод Network.standalone создаёт функцию, которая
выполняет вычисления нейронной сети на основе текущих весов и смещений.
Фактически, эта функция становится независимой от Synaptic и может
использоваться как обычная JavaScript-функция.
Синтаксис:
const standaloneFunction = myNetwork.standalone();
myNetwork — экземпляр объекта
Network.standaloneFunction — функция, принимающая массив
входных данных и возвращающая массив выходных данных.Пример использования:
const { Layer, Network } = require('synaptic');
// Создание простой сети: 2 входа, 3 нейрона скрытого слоя, 1 выход
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
});
// Создание функции-standalone
const standalone = myNetwork.standalone();
// Вычисление результата
const result = standalone([0.5, 0.8]);
console.log(result);
В этом примере функция standalone полностью повторяет
поведение сети без необходимости загружать Synaptic или выполнять вызовы
методов сети.
Метод standalone генерирует цепочку вычислений, которая
отражает структуру слоёв сети. Каждый нейрон сети преобразуется в
простую функцию вида:
function neuronOutput(inputs, weights, bias) {
let sum = bias;
for (let i = 0; i < inputs.length; i++) {
sum += inputs[i] * weights[i];
}
return activation(sum);
}
weights и bias берутся из обученной
сети.activation — функция активации нейрона (например,
sigmoid, tanh или relu), заданная
при построении сети.inputs — массив входных значений.Все нейроны скрытых слоёв объединяются последовательно, создавая полный вычислительный граф. Итоговая функция возвращает массив выходов сети, готовый к использованию вне Synaptic.
standaloneПосле создания standalone-функции её можно сохранить в виде отдельного модуля. Это позволяет разделить обучение сети и использование сети в продуктивной среде.
Пример экспорта:
const fs = require('fs');
// Преобразуем функцию в строку
const functionCode = myNetwork.standalone().toString();
// Сохраняем в файл
fs.writeFileSync('network.js', `module.exports = ${functionCode};`);
В другом файле можно импортировать и использовать эту функцию без Synaptic:
const network = require('./network');
const output = network([1, 0]);
console.log(output);
Такой подход обеспечивает переносимость и минимизацию зависимостей.
Network.Метод Network.standalone превращает нейросеть Synaptic в
автономный, независимый инструмент вычислений. Это делает библиотеку
универсальной не только для обучения, но и для масштабируемого
применения в разнообразных проектах.