В библиотеке Brain.js нейронные сети могут сохраняться и
восстанавливаться в виде JSON-объектов. Метод fromJSON
позволяет загрузить ранее обученную сеть с сохранёнными весами,
архитектурой и состоянием. Это критически важно для случаев, когда
обучение занимает значительное время, а сеть требуется использовать
многократно или на разных устройствах.
fromJSONМетод fromJSON принимает объект JSON, который содержит
полное состояние нейронной сети:
С помощью fromJSON можно полностью восстановить сеть без
необходимости повторного обучения.
const brain = require('brain.js');
// Создание новой сети
const net = new brain.NeuralNetwork();
// Загружаем сохранённый JSON
const savedJSON = require('./network.json');
net.fromJSON(savedJSON);
// Теперь сеть готова к использованию
const output = net.run([1, 0, 1]);
console.log(output);
Структура JSON обычно содержит следующие ключи:
Пример фрагмента JSON:
{
"sizes": [3, 4, 2],
"layers": [
{
"0": {"bias": 0.5, "weights": {"0": 0.1, "1": -0.2, "2": 0.3}}
},
{
"0": {"bias": -0.3, "weights": {"0": 0.4, "1": 0.1, "2": -0.5, "3": 0.2}}
}
],
"activation": "sigmoid",
"trainOpts": {"learningRate": 0.01, "iterations": 20000, "errorThresh": 0.005}
}
Совместимость версий JSON, сохранённый в одной версии Brain.js, может частично работать в другой версии. Основные изменения касаются новых функций активации и методов нормализации входных данных.
Входные и выходные данные Если сеть обучалась с
использованием inputLookup или outputLookup,
необходимо подавать данные в том же формате. Иначе структура выходов
может не совпадать.
Оптимизация производительности Загрузка сети
через fromJSON выполняется быстро, но повторное сохранение
больших сетей требует внимания к объёму JSON. Для крупных проектов стоит
использовать бинарные форматы или сжатие JSON перед хранением.
Обновление сети после загрузки После
восстановления сети её можно дополнительно обучать на новых данных. Для
этого используется обычный метод train, при этом
сохранённые веса становятся начальной точкой обучения, что ускоряет
процесс и улучшает качество адаптации к новым данным.
const additionalData = [
{ input: [0, 1, 0], output: [1, 0] },
{ input: [1, 1, 1], output: [0, 1] }
];
net.train(additionalData, { iterations: 1000, learningRate: 0.01 });
fromJSONinputLookup и
outputLookup.Загрузка сети через fromJSON делает работу с Brain.js
более гибкой и позволяет строить устойчивые и переносимые решения на
основе нейронных сетей.