Brain.js — это библиотека на JavaScript, предназначенная
для создания, обучения и использования нейронных сетей. Один из ключевых
аспектов работы с сетями — возможность сохранять их состояние для
последующего использования без повторного обучения. Метод
toJSON обеспечивает удобный способ сериализации обученной
нейронной сети в формат, который можно записать на диск или передать по
сети.
toJSONМетод toJSON применяется к объекту нейронной сети после
её обучения. Он возвращает объект JavaScript, содержащий все параметры
сети:
Пример базового использования:
const brain = require('brain.js');
const net = new brain.NeuralNetwork();
net.train([
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] }
]);
const json = net.toJSON();
console.log(JSON.stringify(json, null, 2));
В этом примере сеть обучается на задаче XOR, после чего её состояние
сериализуется в объект. JSON.stringify используется для
визуализации структуры в удобочитаемом формате.
toJSONОбъект JSON, возвращаемый методом, включает несколько ключевых частей:
sizes — массив, указывающий количество
нейронов в каждом слое.layers — объект, содержащий все слои и
их нейроны, с весами и смещениями.outputLookup и
inputLookup — объекты, позволяющие сопоставлять
входные и выходные значения с их индексами (актуально для категориальных
данных).trainOpts — параметры обучения, если
они были переданы.Пример структуры слоя:
{
"layers": {
"0": {
"0": {"bias": 0.1, "weights": {"0": 0.5, "1": -0.3}},
"1": {"bias": -0.2, "weights": {"0": -0.1, "1": 0.7}}
},
"1": {
"0": {"bias": 0.05, "weights": {"0": 1.2, "1": -0.9}}
}
}
}
Каждый нейрон хранит собственный bias и веса на входные соединения. Это позволяет полностью восстановить состояние сети при загрузке.
Сохранение сети с помощью toJSON применяется в следующих
ситуациях:
Для записи сети на диск можно использовать стандартный модуль
fs в Node.js:
const fs = require('fs');
const trainedNetJSON = net.toJSON();
fs.writeFileSync('network.json', JSON.stringify(trainedNetJSON, null, 2));
Это создаёт файл network.json, содержащий
сериализованную сеть. Такой файл можно хранить как конфигурацию или
версию модели.
Восстановление сети выполняется через метод
fromJSON:
const fs = require('fs');
const brain = require('brain.js');
const net = new brain.NeuralNetwork();
const savedJSON = JSON.parse(fs.readFileSync('network.json', 'utf8'));
net.fromJSON(savedJSON);
// Проверка работы сети после загрузки
console.log(net.run([1, 0]));
После вызова fromJSON сеть полностью готова к
использованию и не требует повторного обучения.
toJSON от
toFunctionМетод toFunction создаёт компактную JavaScript-функцию,
способную вычислять выходные значения сети, но без возможности изменения
весов или повторного обучения. toJSON сохраняет всё
состояние сети, что делает его идеальным для дальнейшей
модификации и обучения.
С помощью toJSON в Brain.js достигается полная
переносимость нейронных сетей, сохранение и восстановление их состояния,
что значительно упрощает управление моделями в производственных и
учебных проектах.