Mind.js — это библиотека для работы с нейронными сетями и машинным обучением на JavaScript. В её основе лежит простая, но мощная архитектура, позволяющая создавать, обучать и использовать модели нейросетей без сложной конфигурации. Ключевым элементом при работе с Mind.js являются интерфейсы и типы данных, которые обеспечивают строгую структуру и предсказуемость поведения сети.
Mind.js использует несколько базовых типов данных для представления входов, выходов и параметров сети:
Каждый тип данных строго проверяется при обучении и прогнозировании, что снижает риск ошибок при работе с сетью.
NeuralNetworkЦентральным интерфейсом библиотеки является
NeuralNetwork. Он определяет структуру сети, методы её
обучения и прогнозирования:
interface NeuralNetwork {
train(data: Array<TrainingSample>, options?: TrainOptions): TrainingResult;
run(input: Array<Number> | Object): Array<Number> | Object;
fromJSON(json: Object): void;
toJSON(): Object;
}
TrainingSample и
опциональные параметры обучения TrainOptions.TrainingSampleОбъект обучающего примера строго типизирован для гарантии корректного обучения:
interface TrainingSample {
input: Array<Number> | Object;
output: Array<Number> | Object;
}
run.Использование объектов позволяет создавать семантически осмысленные данные, где каждый ключ соответствует отдельному признаку или категории.
TrainOptions)Библиотека поддерживает гибкую настройку процесса обучения через объект параметров:
interface TrainOptions {
iterations?: number;
errorThresh?: number;
log?: boolean | ((epoch: number, error: number) => void);
learningRate?: number;
momentum?: number;
}
Mind.js поддерживает работу с разными слоями сети, где каждый слой имеет свои параметры:
interface Layer {
type: 'input' | 'hidden' | 'output';
size: number;
activation?: 'sigmoid' | 'relu' | 'tanh';
}
sigmoid.Выбор правильного типа слоя и функции активации напрямую влияет на точность модели и скорость обучения.
Mind.js автоматически проверяет соответствие типов входных данных и структуры выходов. Несоответствие типов приводит к исключениям, что предотвращает ошибочные вычисления:
Это обеспечивает строгую типизацию на уровне выполнения, что особенно важно при работе с большими и сложными наборами данных.
const net = new mind.NeuralNetwork();
const trainingData: Array<TrainingSample> = [
{ input: { a: 0, b: 1 }, output: { sum: 1 } },
{ input: { a: 1, b: 0 }, output: { sum: 1 } },
];
const options: TrainOptions = {
iterations: 20000,
errorThresh: 0.005,
learningRate: 0.3,
log: true,
};
net.train(trainingData, options);
const output = net.run({ a: 1, b: 1 });
console.log(output);
В этом примере видно, как интерфейсы TrainingSample,
TrainOptions и метод run взаимодействуют для
создания, обучения и использования сети. Типы данных строго соблюдаются
на всех этапах.
Использование строгих интерфейсов позволяет:
Интерфейсы Mind.js формируют надежную основу для построения устойчивых и предсказуемых нейронных сетей на JavaScript.