-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprzyklad_1.html
105 lines (86 loc) · 3 KB
/
przyklad_1.html
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis@1.0.2/dist/tfjs-vis.umd.min.js"></script>
<style>
body {
font-family: sans-serif;
font-size: 25px;
}
span {
color: blue;
}
</style>
</head>
<body>
<h1>Przykład 1</h1>
<h3>Najprostsza sieć neuronowa</h3>
<hr>
<div>
Użyty backend:
<span id="backend"></span>
</div>
<div>
Zestaw uczący:
<p>Wejście: <span id="inputData"></span></p>
<p>Wyjście: <span id="outputData"></p></span>
</div>
<div>
Zestaw testujący:
<span id="testData"></span>
</div>
<div>
<p>Spodziewany wynik: <span id="expected"></span></p>
<p>Wynik:</p>
<span id="result"></span>
</div>
<script type="text/javascript">
(async function () {
const inputData = [1, 2, 3, 4, 5];
// Spodziewany wynik to x + (x - 1)
const outputData = [1, 3, 5, 7, 9];
const testData = [5,6,7];
document.getElementById('backend').textContent = tf.getBackend();
document.getElementById('inputData').textContent = inputData;
document.getElementById('outputData').textContent = outputData;
document.getElementById('testData').textContent = testData;
/*
Stworzenie tensorów z danymi do uczenia sieci
const trainingData = tf.tensor2d([1, 2, 3, 4, 5], [5, 1]);
5 zbiorów uczących z jedną wartością
*/
const trainingTensor = tf.tensor2d(inputData, [inputData.length, 1]);
const outputTensor = tf.tensor2d(outputData, [outputData.length, 1]);
const testTensor = tf.tensor2d(testData, [testData.length, 1]);
// Stworzenie modelu
const model = tf.sequential();
// Dodanie warstwy
model.add(tf.layers.dense({ units: 1, inputShape: [1] }));
// Kompilacja modelu
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
// Biblioteka pokazująca dane o modelu
tfvis.show.modelSummary({name: 'Model Summary'}, model);
// Ilość przejść przez zestaw uczący
const epochs = 100;
// Uczenie sieci
await model.fit(trainingTensor, outputTensor, {
epochs: epochs,
callbacks: tfvis.show.fitCallbacks(
{ name: 'Training Performance' },
['loss'],
{ height: 200, callbacks: ['onEpochEnd'] }
)
});
// Użycie modelu z danymi testowymi
const result = await model.predict(testTensor).array();
// Wyświetlenie wyniku
document.getElementById('result').innerHTML = result.join('<br>');
// Wyświetlenie spodziewanego wyniku
document.getElementById('expected').textContent = testData.map((elem) => elem + (elem - 1)); ;
})();
</script>
</body>
</html>