Библиотека Brain.js позволяет создавать и обучать нейронные сети непосредственно на JavaScript, что открывает возможности для интерактивного взаимодействия с веб-страницей. Одним из практических применений является динамическая модификация DOM-элементов на основе предсказаний сети.
NeuralNetwork для
стандартных задач предсказания и recurrent.RNN для
последовательных данных.Пример создания простой сети:
const brain = require('brain.js');
const net = new brain.NeuralNetwork();
const trainingData = [
{ input: { red: 1, green: 0, blue: 0 }, output: { stop: 1 } },
{ input: { red: 0, green: 1, blue: 0 }, output: { go: 1 } },
{ input: { red: 0, green: 0, blue: 1 }, output: { wait: 1 } }
];
net.train(trainingData, {
iterations: 20000,
log: true,
logPeriod: 1000,
learningRate: 0.3
});
Ключевой момент: входные данные сети должны быть нормализованы, а структура входа должна соответствовать типу данных, с которыми сеть будет работать в реальном времени.
const result = net.run({ red: 0, green: 1, blue: 0 });
console.log(result); // { go: 0.98, stop: 0.01, wait: 0.01 }
Результаты можно использовать для выбора конкретного действия на странице, например, изменения текста, цвета или видимости элементов.
const trafficLight = document.getElementById('traffic-light');
if (result.go > 0.9) {
trafficLight.style.backgroundColor = 'green';
} else if (result.stop > 0.9) {
trafficLight.style.backgroundColor = 'red';
} else if (result.wait > 0.9) {
trafficLight.style.backgroundColor = 'yellow';
}
Ключевой момент: для корректного отображения реакций важно учитывать пороговые значения вероятностей, чтобы сеть не генерировала неоднозначные действия.
const messageContainer = document.getElementById('message');
if (result.go > 0.9) {
messageContainer.textContent = 'Можно двигаться';
} else if (result.stop > 0.9) {
messageContainer.textContent = 'Стоп';
} else if (result.wait > 0.9) {
messageContainer.textContent = 'Подождите';
}
click или input, чтобы
сеть принимала данные в реальном времени:const inputElement = document.getElementById('color-input');
inputElement.addEventListener('input', (event) => {
const color = event.target.value;
const prediction = net.run(colorToInput(color));
updateDOM(prediction);
});
function colorToInput(color) {
// Преобразование строки цвета в формат {red, green, blue}
const rgb = hexToRgb(color);
return { red: rgb.r / 255, green: rgb.g / 255, blue: rgb.b / 255 };
}
function updateDOM(prediction) {
// Логика обновления элементов DOM на основе предсказания сети
}
setTimeout или Web Workers, чтобы
не блокировать основной поток DOM.[0,1].Использование Brain.js в сочетании с DOM позволяет создавать интерфейсы, которые реагируют на данные в реальном времени, обучаются на примерах и адаптируются к поведению пользователя, превращая статическую страницу в динамическое интерактивное приложение.