Для использования Brain.js в современном JavaScript-проекте рекомендуется подключать библиотеку через сборщики модулей, такие как Webpack, Parcel или Vite. Это позволяет интегрировать библиотеку в структуру проекта, управлять зависимостями и использовать современные возможности ES-модулей.
Библиотека распространяется через npm, что делает её доступной для любого проекта, использующего Node.js или фронтенд-сборщики.
npm install brain.js
# или
yarn add brain.js
После установки библиотека появляется в node_modules, и
её можно импортировать в проект через стандартный синтаксис ES6:
import brain from 'brain.js';
Для CommonJS-проектов используется синтаксис:
const brain = require('brain.js');
Brain.js поддерживает несколько типов нейронных сетей, наиболее
популярные из которых: NeuralNetwork, LSTM,
NeuralNetworkGPU. Инициализация сети производится через
создание нового экземпляра соответствующего класса:
const net = new brain.NeuralNetwork({
hiddenLayers: [10, 20, 10], // Пример конфигурации скрытых слоев
activation: 'sigmoid', // Функция активации: 'sigmoid', 'relu', 'leaky-relu', 'tanh'
});
Ключевые параметры:
hiddenLayers — массив, задающий количество нейронов в
каждом скрытом слое.activation — функция активации нейронов. Влияет на
способность сети к обучению сложных нелинейных зависимостей.learningRate — скорость обучения сети (по умолчанию
0.3).При работе через Webpack или Vite проект может иметь следующую структуру:
project/
│
├─ src/
│ ├─ index.js // Точка входа приложения
│ ├─ network.js // Конфигурация нейронной сети
│ └─ data.json // Набор обучающих данных
│
├─ package.json
└─ webpack.config.js
Пример разделения кода: в network.js создаётся и
экспортируется сеть:
import brain from 'brain.js';
export const net = new brain.NeuralNetwork({
hiddenLayers: [10, 20],
activation: 'relu',
});
В index.js производится импорт и обучение сети:
import { net } from './network.js';
import trainingData from './data.json';
net.train(trainingData, {
iterations: 20000,
log: true,
logPeriod: 1000,
});
Webpack: необходимо убедиться, что в конфигурации
установлен транспайлер Babel для поддержки ES6-модулей. В файле
webpack.config.js обычно указывают:
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: __dirname + '/dist',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: 'babel-loader',
},
],
},
};
Parcel и Vite: эти сборщики автоматически обрабатывают ES-модули, поэтому достаточно указать точку входа:
npx parcel src/index.html
# или
npm run dev (для Vite)
NeuralNetworkGPU, если планируется обучение на больших
объемах данных. Это позволяет ускорить вычисления за счет WebGL.import { NeuralNetworkGPU } from 'brain.js';
const netGPU = new NeuralNetworkGPU({
hiddenLayers: [20, 20],
});
Brain.js позволяет запускать обучение в веб-воркере или в отдельном асинхронном потоке:
const trainNetwork = async (data) => {
return new Promise((resolve) => {
const result = net.train(data, {
iterations: 10000,
log: true,
logPeriod: 500,
});
resolve(result);
});
};
trainNetwork(trainingData).then((stats) => {
console.log('Обучение завершено', stats);
});
Такой подход позволяет не блокировать основной поток исполнения JavaScript, что критично для браузерных приложений.
Использование Brain.js через сборщик позволяет строить масштабируемые проекты, где нейронные сети интегрированы в общий фронтенд или Node.js-стек без конфликтов зависимостей и с полной поддержкой современных возможностей JavaScript.