loading
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
brain = require('brain.js')

// Параметры для инициализации ИНС
const config = {
    binaryThresh: 0.5,
    hiddenLayers: [2], // Количество скрытых слоев
    activation: 'sigmoid', // Функция активации
    log: true // Логирование результатов обучения
};

// Создаем ИНС с параметрами в переменной config
const net = new brain.NeuralNetwork(config);

// Тренируем ИНС определять XOR
// На входе даем два аргумента, а на выходе получаем XOR аругментов
net.train([{input: [0, 0], output: [0]},
           {input: [0, 1], output: [1]},
           {input: [1, 0], output: [1]},
           {input: [1, 1], output: [0]}]);

// На этом этапе у нас уже есть отлично тренерованная ИНС, которую уже можно использовать
let arg1, arg2, output;

arg1 = 0
arg2 = 0
output = net.run([arg1, arg2]);  // Запускаем ИНС
console.log(`\n\n\n${arg1} XOR ${arg2} = ${Math.round(output)}`) // Выводим информацию о работе в консоль. Это будет числов в диапазоне от 0 до 1. Не забываем что ИНС не может давать 100% правильный результат, поэтому мы получим число с плавающей запятой. Если число > .5, то это ближе к 1, если < .5, то это ближе к 0. Для нормализации ответа округлим его при помощи фукнции Marh.round(...)

arg1 = 0
arg2 = 1
output = net.run([arg1, arg2]);
console.log(`${arg1} XOR ${arg2} = ${Math.round(output)}`)

arg1 = 1
arg2 = 0
output = net.run([arg1, arg2]);
console.log(`${arg1} XOR ${arg2} = ${Math.round(output)}`)

arg1 = 1
arg2 = 1
output = net.run([arg1, arg2]);
console.log(`${arg1} XOR ${arg2} = ${Math.round(output)}`)
node v10.15.2 linux/amd64