trainAsync — это метод библиотеки
Brain.js, предназначенный для асинхронного обучения
нейронных сетей. Он является альтернативой синхронному методу
train, позволяя избежать блокировки основного потока
выполнения JavaScript, что особенно важно при работе с большими наборами
данных или в браузерной среде.
Метод trainAsync возвращает Promise,
что позволяет использовать современные конструкции
async/await для управления процессом обучения. Сигнатура
метода выглядит следующим образом:
net.trainAsync(trainingData, options)
trainingData — массив объектов с полями
input и output. Пример:[
{ input: { r: 0.03, g: 0.7, b: 0.5 }, output: { light: 1 } },
{ input: { r: 0.9, g: 0.1, b: 0.1 }, output: { dark: 1 } }
]
options — объект с параметрами обучения, идентичными
синхронному методу, включая:
iterations — максимальное количество итераций.learningRate — скорость обучения.errorThresh — порог ошибки для завершения
обучения.log — функция логирования или булевое значение для
стандартного логирования.logPeriod — периодичность логирования.momentum — моментум для ускорения сходимости.В отличие от метода train, который блокирует выполнение
до завершения обучения, trainAsync не блокирует
поток, позволяя выполнять другие задачи параллельно. Это
особенно актуально для Node.js серверов и клиентских приложений с
интенсивным UI.
Пример использования с async/await:
const brain = require('brain.js');
const net = new brain.NeuralNetwork();
const trainingData = [
{ 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 } }
];
async function trainNetwork() {
const stats = await net.trainAsync(trainingData, {
iterations: 20000,
learningRate: 0.5,
errorThresh: 0.005,
log: true,
logPeriod: 1000
});
console.log(stats);
}
trainNetwork();
В этом примере:
stats содержит статистику
обучения, включая количество итераций и итоговую ошибку.trainAsyncasync/await, Promise.then() или в комбинации с
другими асинхронными операциями.log и logPeriod можно отслеживать прогресс
обучения в реальном времени.NeuralNetwork, LSTM,
FeedForward и других типов сетей.При обучении на больших объемах данных trainAsync
позволяет:
learningRate и iterations.Пример с большим набором данных и логированием прогресса:
const options = {
iterations: 50000,
learningRate: 0.01,
errorThresh: 0.001,
log: (stats) => console.log(`Итерация: ${stats.iterations}, Ошибка: ${stats.error}`),
logPeriod: 500
};
const stats = await net.trainAsync(largeTrainingData, options);
После завершения асинхронного обучения trainAsync
возвращает объект:
{
error: <финальная ошибка>,
iterations: <количество итераций>,
time: <время обучения в миллисекундах>
}
Этот объект позволяет анализировать эффективность обучения и корректировать параметры для последующих запусков.
train может быть быстрее и проще.trainAsync для плавного взаимодействия.trainAsync является ключевым инструментом для
масштабируемого и безопасного обучения нейросетей в JavaScript, позволяя
сочетать эффективность обучения с неблокирующим исполнением кода.