Brain.js — это мощная библиотека для создания нейронных сетей на JavaScript. Её использование через CDN позволяет быстро интегрировать функционал без установки дополнительных пакетов и настройки сборщиков модулей.
Для подключения Brain.js через CDN используется тег
<script> в HTML-документе. Наиболее распространённые
CDN-поставщики: jsDelivr и unpkg. Пример подключения через
jsDelivr:
<script src="https://cdn.jsdelivr.net/npm/brain.js@2.2.0/dist/brain-browser.min.js"></script>
Ключевые моменты:
src указывает на конкретную версию библиотеки.
Для стабильной работы рекомендуется фиксировать версию, чтобы избежать
неожиданного поведения при обновлении.ReferenceError.После подключения объект brain становится доступным в
глобальной области видимости браузера.
Brain.js предоставляет несколько типов нейронных сетей:
feedforward (прямого распространения) — стандартная многослойная сеть для задач классификации и регрессии. Создание и тренировка сети:
const net = new brain.NeuralNetwork();
net.train([
{ input: { red: 1, green: 0, blue: 0 }, output: { color: 1 } },
{ input: { red: 0, green: 1, blue: 0 }, output: { color: 0 } }
]);
const output = net.run({ red: 1, green: 0, blue: 0 });
console.log(output);
Важные аспекты:
recurrent (рекуррентная сеть) — используется для работы с последовательностями и текстовыми данными. Пример создания LSTM-сети через CDN:
const net = new brain.recurrent.LSTM();
net.train([
{ input: 'Привет', output: 'Здравствуй' },
{ input: 'Как дела?', output: 'Хорошо' }
]);
const result = net.run('Привет');
console.log(result);
Особенности рекуррентных сетей:
При создании сети можно задавать параметры, влияющие на качество и скорость обучения:
hiddenLayers — массив чисел, определяющий количество
нейронов в скрытых слоях.learningRate — скорость обучения (обычно
0.01–0.3).activation — функция активации (sigmoid,
relu, leaky-relu, tanh).Пример конфигурации:
const net = new brain.NeuralNetwork({
hiddenLayers: [10, 20],
learningRate: 0.1,
activation: 'relu'
});
Для работы с обученными сетями важно сохранять их состояние:
// Получение JSON
const json = net.toJSON();
// Восстановление из JSON
const restoredNet = new brain.NeuralNetwork();
restoredNet.fromJSON(json);
Это позволяет избежать повторной тренировки и использовать сети в разных сессиях или проектах.
defer, чтобы не блокировать рендеринг
страницы:<script src="https://cdn.jsdelivr.net/npm/brain.js@2.2.0/dist/brain-browser.min.js" defer></script>
recurrent.LSTM, так как старые версии могут некорректно
работать с определёнными методами.<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Brain.js CDN Example</title>
<script src="https://cdn.jsdelivr.net/npm/brain.js@2.2.0/dist/brain-browser.min.js" defer></script>
<script defer>
window.addEventListener('DOMContentLoaded', () => {
const net = new brain.NeuralNetwork({ hiddenLayers: [3] });
net.train([
{ input: { a: 0, b: 0 }, output: { sum: 0 } },
{ input: { a: 0, b: 1 }, output: { sum: 1 } },
{ input: { a: 1, b: 0 }, output: { sum: 1 } },
{ input: { a: 1, b: 1 }, output: { sum: 0 } }
]);
const result = net.run({ a: 1, b: 0 });
console.log('Результат: ', result);
});
</script>
</head>
<body>
</body>
</html>
В этом примере показано, как подключение через CDN позволяет быстро создать сеть, обучить её и использовать в браузере без дополнительных инструментов.
Этот подход оптимален для прототипирования, учебных проектов и небольших приложений, где важно быстро интегрировать функционал нейронных сетей.