1
1
tumia hisabati
2
2
3
+ // Mbinu za Kupanga
4
+ //orodhesha(kwanza, mwisho, umbali), huunda orodha ya nambari na umbali uliowekwa kati yao.
5
+ fanya orodhesha = unda (kwanza , mwisho , umbali ){
6
+ fanya orodha = [kwanza ];
7
+ fanya i = kwanza + umbali ;
8
+ wakati (i < mwisho ){
9
+ orodha .sukuma (i );
10
+ i += umbali ;
11
+ }
12
+ rudisha orodha ;
13
+ }
14
+
3
15
// Kuanzisha uzani bila mpangilio
4
16
fanya mizani = [
5
17
hisabati .random () * 2 - 1 ,
@@ -18,6 +30,7 @@ fanya sigmoid = unda(vekta) {
18
30
19
31
// Derivative ya undo la sigmoid
20
32
fanya sigmoidDerivative = unda (vekta ) {
33
+ andika ("vekta: " ,vekta )
21
34
fanya tokeo = [];
22
35
kwa v ktk vekta {
23
36
tokeo .sukuma (v * (1 - v ));
@@ -26,9 +39,9 @@ fanya sigmoidDerivative = unda(vekta) {
26
39
rudisha tokeo ;
27
40
}
28
41
29
- fanya kuzidishaTumboVekta = unda (tumbo , vekta ) {
42
+ fanya kuzidishaMatrikiVekta = unda (matriki , vekta ) {
30
43
fanya tokeo = [];
31
- kwa row ktk tumbo {
44
+ kwa row ktk matriki {
32
45
fanya jamii = 0 ;
33
46
kwa j , kipengee ktk row {
34
47
jamii += kipengee * vekta [j ];
@@ -54,53 +67,87 @@ fanya zidishaKwaNukta = unda(safu1, safu2) {
54
67
55
68
// Songa mbele kupitia mtandao wa neva
56
69
fanya waza = unda (pembejeo , mizani ) {
57
- fanya jumlaYaUzani = sigmoid (kuzidishaTumboVekta (pembejeo , mizani ));
70
+ fanya jumlaYaUzani = sigmoid (kuzidishaMatrikiVekta (pembejeo , mizani ));
58
71
rudisha jumlaYaUzani ;
59
72
}
60
73
74
+ fanya badiliMatriki = unda (matrix ) {
75
+ // Pata idadi ya safu mlalo na safu wima katika matrix asili
76
+ fanya nambari_ya_safu_mlalo = matrix .idadi ();
77
+ fanya nambari_ya_safu_wima = matrix [0 ].idadi ();
78
+
79
+ // Unda matrix mpya na safu mlalo na safu wima zilizobadilishwa
80
+ fanya matrikiIliyobadili = [];
81
+
82
+ // Pita ndani ya safu wima
83
+ kwa safu_wima_ya , safuW ktk orodhesha (0 , nambari_ya_safu_wima , 1 ){
84
+ // Anzisha safu mlalo mpya kwa matriki iliyopitishwa
85
+ fanya transposed_safu_mlalo = [];
86
+
87
+ // Pita ndani ya safu mlalo
88
+ kwa safu_mlalo_ya , safu ktk orodhesha (0 , nambari_ya_safu_mlalo , 1 ){
89
+ // Sukuma kipengele kwenye safu wima ya sasa na safu mlalo hadi safu iliyopitishwa
90
+ transposed_safu_mlalo .sukuma (matrix [safu_mlalo_ya ][safu_wima_ya ]);
91
+ }
92
+
93
+ // Sukuma safu mlalo iliyopitishwa kwenye matriki lililopitishwa
94
+ matrikiIliyobadili .sukuma (transposed_safu_mlalo );
95
+ }
96
+
97
+ rudisha matrikiIliyobadili ;
98
+ }
99
+
61
100
// Funza mtandao wa neva
62
101
fanya funza = unda (mizani , mafunzoPembejeo , matokeoYaMafunzo , marudioYaMafunzo ) {
63
102
fanya kurudia = 0
64
103
65
- andika ('mafunzoPembejeo : ');
104
+ andika ('\ nmafunzoPembejeo : ');
66
105
andika (mafunzoPembejeo );
67
106
68
- andika ('matokeoYaMafunzo : ');
107
+ andika ('\ nmatokeoYaMafunzo : ');
69
108
andika (matokeoYaMafunzo );
70
109
71
110
111
+ fanya orodha = orodhesha (0 , marudioYaMafunzo , 1 )
112
+ // andika("orodha: ",orodha)
72
113
73
- wakati ( kurudia < marudioYaMafunzo ) {
74
- andika ('kurudia : ');
75
- andika (kurudia );
114
+ kwa i ktk orodha {
115
+ andika ('\ n \ nkurudia : ');
116
+ andika (i );
76
117
// Pitisha mafunzo yaliyowekwa kupitia mtandao wa neva
77
118
fanya pato = waza (mafunzoPembejeo , mizani );
78
119
79
- andika ('pato : ');
120
+ andika ('\ npato : ');
80
121
andika (pato );
81
- // Kuhesabu kiwango cha makosa
122
+
123
+ // Kuhesabu kiwango cha upungufu
82
124
fanya upungufu = [];
83
125
kwa i , kipengee ktk matokeoYaMafunzo {
84
126
upungufu .sukuma (kipengee - pato [i ]);
85
127
}
86
128
87
- fanya sigmoidDerivative = sigmoidDerivative (pato )
88
-
89
- andika ('upungufu : ');
129
+ andika ('\nupungufu : ');
90
130
andika (upungufu );
91
131
92
- andika ('sigmoidDerivative tokeo : ');
93
- andika (sigmoidDerivative );
132
+ fanya sigmoidDerivative_ya_pato = sigmoidDerivative (pato )
94
133
95
- fanya zidishaKwaNukta = zidishaKwaNukta (upungufu , sigmoidDerivative );
134
+ andika ('\nsigmoidDerivative tokeo : ');
135
+ andika (sigmoidDerivative_ya_pato );
96
136
97
- andika ('zidishaKwaNukta tokeo : ');
98
- andika (zidishaKwaNukta );
137
+ fanya zidishaKwaNukta_tokeo = zidishaKwaNukta (upungufu , sigmoidDerivative_ya_pato );
99
138
100
- // Kuzidisha makosa kwa pembejeo na upinde rangi ya kitendakazi cha sigmoid
139
+ andika ('\nzidishaKwaNukta tokeo : ');
140
+ andika (zidishaKwaNukta_tokeo );
141
+
142
+ fanya mafunzoPembejeoYaliyobadili = badiliMatriki (mafunzoPembejeo )
143
+
144
+ andika ('\nmafunzo pembejeo yaliyobadili : ');
145
+ andika (mafunzoPembejeoYaliyobadili );
146
+
147
+ // Kuzidisha upungufu kwa pembejeo na upinde rangi ya kitendakazi cha sigmoid
101
148
// Uzito mdogo wa ujasiri hurekebishwa zaidi kupitia asili ya kazi
102
- fanya marekebisho = kuzidishaTumboVekta (mafunzoPembejeo , zidishaKwaNukta );
103
- andika ('marekebisho tokeo : ');
149
+ fanya marekebisho = kuzidishaMatrikiVekta (mafunzoPembejeo , zidishaKwaNukta_tokeo );
150
+ andika ('\ nmarekebisho tokeo : ');
104
151
andika (marekebisho );
105
152
106
153
@@ -109,16 +156,16 @@ fanya funza = unda(mizani, mafunzoPembejeo, matokeoYaMafunzo, marudioYaMafunzo)
109
156
mizani [i ] = mizani [i ] + marekebisho [i ];
110
157
}
111
158
112
- andika ('mizani mpya : ');
159
+ andika ('\ nmizani mpya : ');
113
160
andika (mizani );
114
161
kurudia ++
115
162
}
163
+
116
164
rudisha mizani ;
117
165
}
118
166
119
167
120
-
121
- andika ('Mizani ya Kuanzisha isiyo na mpangilio : ');
168
+ andika ('\nMizani ya Kuanzisha isiyo na mpangilio : ');
122
169
andika (mizani );
123
170
124
171
// Seti ya mafunzo
@@ -128,14 +175,14 @@ fanya matokeoYaMafunzo = [0, 1, 1, 0];
128
175
// Funza mtandao wa neva
129
176
fanya mafunzoMizani = funza (mizani , mafunzoPembejeo , matokeoYaMafunzo , 10000 );
130
177
131
- andika ('Mizani baada ya mafunzo :');
178
+ andika ('\ nMizani baada ya mafunzo :');
132
179
andika (mafunzoMizani );
133
180
134
181
// Ingizo la mtumiaji kwa hali mpya
135
- fanya A = 1 ;
182
+ fanya A = 0 ;
136
183
fanya B = 0 ;
137
- fanya C = 0 ;
184
+ fanya C = 1 ;
138
185
139
- andika ('Hali mpya : data ya pembejeo = ', A , B , C );
140
- andika ('Data ya pato :');
186
+ andika ('\ nHali mpya : data ya pembejeo = ', A , B , C );
187
+ andika ('\ nData ya pato :');
141
188
andika (waza ([[A , B , C ]], mafunzoMizani ));
0 commit comments