Библиотека Brain.js предоставляет инструменты для построения и обучения нейронных сетей в JavaScript. При работе с большими объемами данных стандартная загрузка всего датасета в память может быть неэффективной или невозможной. Потоковая обработка позволяет обучать модели последовательно, по частям, без необходимости держать весь набор данных одновременно.
Потоковая обработка подразумевает:
Для корректной работы Brain.js данные должны быть представлены в виде массива объектов:
{ input: [x1, x2, ...], output: [y1, y2, ...] }
При потоковой обработке рекомендуется формировать батчи такого вида и передавать их в модель по очереди. Пример структуры батча:
const batch = [
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] }
];
Brain.js позволяет обучать сети методом
train или
trainAsync. Для больших датасетов
предпочтительно использовать trainAsync,
чтобы избежать блокировки основного потока исполнения JavaScript.
Потоковое обучение строится на последовательной подаче батчей:
const brain = require('brain.js');
const fs = require('fs');
const readline = require('readline');
const net = new brain.NeuralNetwork();
async function trainFromFile(filePath) {
const fileStream = fs.createReadStream(filePath);
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
const batchSize = 100;
let batch = [];
for await (const line of rl) {
const data = JSON.parse(line); // каждая строка — JSON объект
batch.push({ input: data.input, output: data.output });
if (batch.length === batchSize) {
await net.trainAsync(batch, { iterations: 10 });
batch = [];
}
}
if (batch.length > 0) {
await net.trainAsync(batch, { iterations: 10 });
}
}
В этом примере:
readline используется для чтения файла
построчно.Параметры обучения существенно влияют на эффективность потоковой обработки:
Для больших наборов данных полезно:
NeuralNetworkGPU при
наличии GPU, что ускоряет матричные операции.const json = net.toJSON();
fs.writeFileSync('model.json', JSON.stringify(json));
Потоковое обучение с Brain.js сочетает простоту интерфейса с гибкостью обработки больших и динамических наборов данных. Такой подход позволяет создавать адаптивные нейронные сети в среде JavaScript, избегая ограничений памяти и обеспечивая стабильное обновление модели в реальном времени.