Zbudowałem sieć neuronową w oparciu o Brain.js (moduł języka Java)
Program ma nauczyć się zaokrąglać - zgodnie z przyjętymi zasadami - liczby: (0 dla 0.0 - 0.49; 1 dla 0.5 - 1.0)
Najpierw uczono program na pojedynczych przykładach, następnie miał miejsce trening sieci neuronowej, w oparciu o Brain.js, a potem sprawdziłem skutek na przykładach.
Dane treningowe sieci:
const trainingData = [
{ input: [0.2], output: [0] },
{ input: [0.4], output: [0] },
{ input: [0.6], output: [1] },
{ input: [0.8], output: [1] }
];
Dane testowe:
[0.1, 0.3, 0.5, 0.7, 0.9];
Parametry testowanej sieci:
iterations: 1000,
dokładność treningu:
0.012254610805153577
........................................................
Wynik był bez błędów,
sieć dała sobie radę z nowymi
liczbami:
0.1 → wynik: 0.001562890480272472
0.3 → wynik: 0.01895085535943508
0.5 → wynik: 0.5213671922683716
0.7 → wynik: 0.9670711755752563
0.9 → wynik: 0.9925487041473389
mimo tylko kilku wzorców.
............................................................
program:
( . . . )
</head>
<body>
<h4>Testowanie sieci neuronowej w Brain.js</h4>
<script>
// 1. Inicjalizacja sieci neuronowej
const net = new brain.NeuralNetwork();
// 2. Dane treningowe
const trainingData = [
{ input: [0.2], output: [0] },
{ input: [0.4], output: [0] },
{ input: [0.6], output: [1] },
{ input: [0.8], output: [1] }
];
// 3. Trening sieci neuronowej
console.log("Trening sieci...");
net.train(trainingData, {
iterations: 20000,
errorThresh: 0.005, // próg błędu
log: true,
logPeriod: 1000
});
console.log("Trening zakończony!\n");
// 4. Testowanie sieci
const testValues = [0.1, 0.3, 0.5, 0.7, 0.9];
testValues.forEach(value => {
const output = net.run([value]);
console.log(`Wejście: ${value} → Wynik: ${output}`);
});
( . . . )