NeuralNetworkGPU — это специализированный класс библиотеки Brain.js, предназначенный для ускоренного обучения нейронных сетей с использованием графического процессора (GPU). В отличие от стандартного NeuralNetwork, который выполняет вычисления на CPU, NeuralNetworkGPU позволяет значительно сократить время обучения при обработке больших наборов данных и сложных архитектур.
Создание экземпляра сети осуществляется через конструктор:
const brain = require('brain.js');
const net = new brain.NeuralNetworkGPU({
hiddenLayers: [64, 32],
activation: 'relu',
learningRate: 0.01,
decayRate: 0.999,
errorThresh: 0.005
});
Ключевые параметры конструктора:
[64, 32] создаёт два
скрытых слоя с 64 и 32 нейронами соответственно.'sigmoid', 'relu', 'leaky-relu',
'tanh'. Выбор функции влияет на скорость обучения и
способность сети аппроксимировать сложные зависимости.Для работы с NeuralNetworkGPU данные должны быть
нормализованы в диапазоне [0, 1]. Входные и выходные данные
задаются в виде объектов:
const trainingData = [
{ input: { r: 0.1, g: 0.2, b: 0.3 }, output: { dark: 1 } },
{ input: { r: 0.8, g: 0.7, b: 0.6 }, output: { light: 1 } }
];
Для числовых задач регрессии output может содержать одно
число:
{ input: { x: 0.5 }, output: { y: 0.75 } }
Метод .train() запускает процесс обучения:
net.train(trainingData, {
iterations: 20000,
log: true,
logPeriod: 100,
learningRate: 0.01
});
Параметры метода train:
Метод возвращает объект с итоговой ошибкой:
{ error: 0.0047, iterations: 842, time: 2150 }
После обучения используется метод .run() для получения
предсказаний:
const output = net.run({ r: 0.2, g: 0.3, b: 0.4 });
console.log(output); // { dark: 0.89, light: 0.12 }
Для дальнейшего использования обученную сеть можно сериализовать:
const json = net.toJSON();
Восстановление выполняется через конструктор или метод
.fromJSON():
const net2 = new brain.NeuralNetworkGPU();
net2.fromJSON(json);
Такой подход позволяет переносить сеть между проектами или сохранять её состояние на диск.
gpu.js, который автоматически
интегрируется с Brain.js.relu и
leaky-relu быстрее для больших сетей, sigmoid
более стабилен для маленьких наборов данных.const net = new brain.NeuralNetworkGPU({ gpu: true });
NeuralNetworkGPU обеспечивает эффективную работу нейросетей в среде JavaScript, позволяя использовать преимущества параллельной обработки на графическом процессоре, ускоряя обучение и расширяя возможности для решения сложных задач машинного обучения.