Repository navigation
Expand file tree
/
Copy pathnetwork.js
More file actions
76 lines (52 loc) · 2.16 KB
/
Copy pathnetwork.js
File metadata and controls
76 lines (52 loc) · 2.16 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
'use strict';
const Stats = require('./utils/stats');
class Network {
constructor(perceptrons) {
this.perceptrons = perceptrons;
}
train(trainingSet) {
console.time('TrainingNetwork');
for (let i = 0; i < trainingSet.length; i++) {
const inputs = trainingSet[i].inputs;
const desOutput = trainingSet[i].output;
const actOutput = this.perceptrons.map((perceptron) => perceptron.fun(inputs, perceptron.weights, perceptron.bias));
this.perceptrons.forEach((perceptron, index) => {
for (let j = 0; j < perceptron.weights.length; j++) {
perceptron.weights[j] = perceptron.weights[j] + perceptron.r * (desOutput[index] - actOutput[index]) * inputs[j];
}
});
}
console.timeEnd('TrainingNetwork');
}
test(testSet) {
const stats = new Stats(testSet.length);
console.time('TestingNetwork');
for (let i = 0; i < testSet.length; i++) {
const testOutput = this.perceptrons.map((perceptron) => perceptron.fun(testSet[i].inputs, perceptron.weights, perceptron.bias));
const desOutput = [Number(testSet[i].inputs[0] > 0), Number(testSet[i].inputs[1] > 0)];
const isok = stats.isOk(testSet[i], desOutput, testOutput);
if (!isok) {
console.log(stats.lastFailedSample);
}
}
console.timeEnd('TestingNetwork');
stats.logSummary();
}
getOutput(inputs) {
return this.perceptrons.map((perceptron) => perceptron.fun(inputs, perceptron.weights, perceptron.bias));
}
getQuarter(coords) {
const output = this.getOutput(coords);
switch (true) {
case output[0] === 1 && output[1] === 1:
return 'Quarter I';
case output[0] === 0 && output[1] === 1:
return 'Quarter II';
case output[0] === 0 && output[1] === 0:
return 'Quarter III';
case output[0] === 1 && output[1] === 0:
return 'Quarter IV';
}
}
}
module.exports = Network;