Клонирование сети — процесс создания точной копии существующей нейронной сети с сохранением всех её параметров: структуры, весов и смещений. В библиотеке Synaptic это особенно важно при необходимости многократного использования одной и той же модели, организации экспериментов с различными конфигурациями или реализации параллельного обучения.
В Synaptic нейронная сеть представляет собой объект
Network, который объединяет слои, нейроны и соединения.
Каждый нейрон хранит внутренние состояния:
Слои (Layer) и нейроны (Neuron) формируют
иерархию сети. Важным свойством является то, что структура и параметры
сети могут изменяться динамически, однако при клонировании требуется
получить независимую копию, полностью идентичную исходной.
Synaptic предоставляет встроенный метод
clone(), применимый к объектам типа
Network и Layer. При его использовании
создается новая сеть с идентичной архитектурой и значениями весов.
Пример клонирования сети:
const synaptic = require('synaptic');
const { Layer, Network } = synaptic;
// Создание исходной сети
const inputLayer = new Layer(3);
const hiddenLayer = new Layer(4);
const outputLayer = new Layer(2);
inputLayer.project(hiddenLayer);
hiddenLayer.project(outputLayer);
const originalNetwork = new Network({
input: inputLayer,
hidden: [hiddenLayer],
output: outputLayer
});
// Клонирование сети
const clonedNetwork = originalNetwork.clone();
После вызова clone() новая сеть не ссылается на
исходные объекты нейронов и соединений, что обеспечивает
независимость обучения и изменений параметров.
Иногда требуется клонировать не всю сеть, а отдельный слой. Метод
clone() применим и к слоям:
const clonedHidden = hiddenLayer.clone();
При клонировании слоя создаются новые нейроны с идентичными весами и смещениями, но без исходящих соединений к другим слоям. Это позволяет гибко строить новые сети на основе существующих компонентов.
clone() вместо ручного копирования
свойств нейронов и соединений.Network, чтобы метод clone()
корректно воспроизводил все связи.const inputLayer = new Layer(5);
const hiddenLayer1 = new Layer(10);
const hiddenLayer2 = new Layer(8);
const outputLayer = new Layer(3);
inputLayer.project(hiddenLayer1);
hiddenLayer1.project(hiddenLayer2);
hiddenLayer2.project(outputLayer);
const network = new Network({
input: inputLayer,
hidden: [hiddenLayer1, hiddenLayer2],
output: outputLayer
});
const networkClone = network.clone();
// Проверка независимости
networkClone.layers.hidden[0].list[0].bias = 0.9;
console.log(network.layers.hidden[0].list[0].bias); // Оригинальный нейрон не изменится
Клонирование в Synaptic — это мощный инструмент для работы с нейронными сетями, позволяющий сохранять архитектуру и параметры без риска взаимного влияния между объектами. Такой подход обеспечивает гибкость при построении сложных систем машинного обучения и многократном использовании моделей.