Brain.js — это JavaScript-библиотека для создания и обучения нейронных сетей. Она позволяет реализовывать как простые, так и сложные модели прямо в браузере, используя чистый JavaScript. Одним из важных аспектов является возможность загрузки предобученной сети, что особенно актуально для приложений, где обучение в реальном времени невозможно или нежелательно.
При обучении сети с помощью Brain.js объект сети содержит
веса, смещения и настройки обучения. Для сохранения
состояния используется метод toJSON(), который возвращает
сериализованный объект Jav * aScript:
const net = new brain.NeuralNetwork();
net.train([{input: [0, 0], output: [0]}, {input: [0, 1], output: [1]}]);
const savedNetwork = net.toJSON();
console.log(savedNetwork);
В объекте JSON сохраняются:
Такой объект можно сохранить на сервере или в локальном хранилище и использовать для последующего восстановления сети.
Для загрузки предобученной сети необходимо использовать метод
fromJSON(). Этот метод принимает сериализованный объект и
восстанавливает внутреннее состояние нейронной сети:
// Предположим, что savedNetwork загружен с сервера или из localStorage
const net = new brain.NeuralNetwork();
net.fromJSON(savedNetwork);
// Использование сети для предсказаний
const output = net.run([1, 0]);
console.log(output);
Ключевые моменты:
fromJSON() полностью восстанавливает веса и структуру
сети.run() для предсказаний.Для браузерных приложений важна оптимизация размера предобученной сети, так как большие объёмы данных могут замедлять загрузку страницы. Основные техники:
NeuralNetworkGPU только при
необходимости. GPU-сеть создаёт более объёмный JSON.JSON.stringify() и gzip.trainOpts, могут быть удалены, если дальнейшее
обучение не требуется.Пример с минимизацией размера:
const minimizedJSON = JSON.stringify(savedNetwork);
localStorage.setItem('network', minimizedJSON);
При загрузке:
const loadedNetwork = JSON.parse(localStorage.getItem('network'));
net.fromJSON(loadedNetwork);
Для современных веб-приложений предпочтительно загружать сеть асинхронно с сервера, чтобы не блокировать интерфейс:
async function loadNetwork(url) {
const response = await fetch(url);
const json = await response.json();
const net = new brain.NeuralNetwork();
net.fromJSON(json);
return net;
}
loadNetwork('/models/myNetwork.json').then(net => {
const result = net.run([0, 1]);
console.log(result);
});
Такой подход позволяет:
Применение предобученных сетей в браузере позволяет:
Примеры применения:
Загрузка предобученной сети обеспечивает готовую к использованию нейронную модель, которая может работать мгновенно и безопасно в браузерной среде.