From d79bd87b73aa2709111f87006bdf7cfb3087c65f Mon Sep 17 00:00:00 2001 From: mirimatcode Date: Sat, 1 Feb 2025 13:00:24 +0100 Subject: [PATCH] modifica formula multilayer mettendo i pesi di pout nel calcolo del gradiente e cambiando il segno del calcolo dell'errore --- layer_multi | Bin 25768 -> 25768 bytes layer_multi.c | 22 ++++++++++++---------- layer_multi_addestrato | Bin 21696 -> 21696 bytes layer_multi_addestrato.c | 14 +++++--------- percettrone.h | 10 +++++----- stampe_video.h | 0 6 files changed, 22 insertions(+), 24 deletions(-) delete mode 100644 stampe_video.h diff --git a/layer_multi b/layer_multi index bd2fa6c961a699f53150f63c324bf00cc97e67cd..824f3c4438a567b3a739e4eec9ff869aa72a883b 100755 GIT binary patch delta 5372 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 diff --git a/layer_multi.c b/layer_multi.c index 1ee801a..b7ebbc6 100644 --- a/layer_multi.c +++ b/layer_multi.c @@ -13,7 +13,7 @@ int MAX_EPOCHE = 10000; 4: NOR 5: XNOR */ -int tipo = 0; +int tipo = 2; void main() { @@ -77,7 +77,8 @@ void main() Percettrone pout = crea_percettrone(); int colore_blu = makecol(0, 0, 255); - p_ext_1.w1 = 1.332870; + //XOR + /* p_ext_1.w1 = 1.332870; p_ext_1.w2 = -0.628797; p_ext_1.bias = 0.729138; @@ -87,7 +88,7 @@ void main() pout.w1 = -0.004388; pout.w2 = 0.090205; - pout.bias = -0.067931; + pout.bias = -0.067931; */ // Contatore per fermare il percettrone, se vale 4 significa che ha indovinato tutte e 4 le combinazioni int corrette = 0; @@ -135,7 +136,8 @@ void main() double y_ext_2 = funzione_sigmoide(p_ext_2, x[j][0], x[j][1]); double yout = funzione_sigmoide(pout, y_ext_1, y_ext_2); - double errore = -(output[j] - yout); + double errore = (output[j] - yout); + int previsione = -1; if (yout >= soglia_funzione_attivazione) @@ -158,15 +160,15 @@ void main() else { // Gradienti percettrone 1 - double gradiente_w1 = errore * yout * (1 - yout) * y_ext_1 * (1 - y_ext_1) * x[j][0]; - double gradiente_w2 = errore * yout * (1 - yout) * y_ext_1 * (1 - y_ext_1) * x[j][1]; - double gradiente_bias = errore * yout * (1 - yout) * y_ext_1 * (1 - y_ext_1); + double gradiente_w1 = errore * yout * (1 - yout) * y_ext_1 * (1 - y_ext_1) * x[j][0] * pout.w1; + double gradiente_w2 = errore * yout * (1 - yout) * y_ext_1 * (1 - y_ext_1) * x[j][1] * pout.w1; + double gradiente_bias = errore * yout * (1 - yout) * y_ext_1 * (1 - y_ext_1) * pout.w1; correggi_pesi(&p_ext_1, gradiente_w1, gradiente_w2, gradiente_bias); // Gradienti percettrone 2 - gradiente_w1 = errore * yout * (1 - yout) * y_ext_2 * (1 - y_ext_2) * x[j][0]; - gradiente_w2 = errore * yout * (1 - yout) * y_ext_2 * (1 - y_ext_2) * x[j][1]; - gradiente_bias = errore * yout * (1 - yout) * y_ext_2 * (1 - y_ext_2); + gradiente_w1 = errore * yout * (1 - yout) * y_ext_2 * (1 - y_ext_2) * x[j][0] * pout.w2; + gradiente_w2 = errore * yout * (1 - yout) * y_ext_2 * (1 - y_ext_2) * x[j][1] * pout.w2; + gradiente_bias = errore * yout * (1 - yout) * y_ext_2 * (1 - y_ext_2) * pout.w2; correggi_pesi(&p_ext_2, gradiente_w1, gradiente_w2, gradiente_bias); // Gradienti percettrone out diff --git a/layer_multi_addestrato b/layer_multi_addestrato index 81a8b07ef7e8291d89f3f84b11f2c17bb7a4d992..e5cf3d5befd19bd4d65220a7d8d4bea1100a5b88 100755 GIT binary patch delta 4348 zcmZ`-4OA4@6`lb{gvhce2)lsGDnAPtK|zEXQdeCZlj6Y|Dkd>%(}0ONrft+h6<6aA zXEScq^U_2kr)rK#)bywgZ4VHGXc~Wd5`Ws%qCv&~O~i&GBB*ux-8VBbLBl!w?!Nnd z_rCkR_vX!8ns$m!JH@@@#n9&d0{?5Sog!w6k#e@yePEd{NR299F>Y$lvt=Fk$IRX} z@2!{4EKWNxthOdN!Xk#%{xNcom{}I_T~kLyIzHCuB8MQ9MYxW1M7;2K^d%4a9T77R z;Cpx)|NcDl50-Q93?<%-17&i=vL-YOngZqbRF!vSpQj!CB5I^Rf!GmIiiB3_efC(? zsF|`=Ry^J4kB>!WPb<&^nkRC+0S)*b1&JO|1RasTPYHm+ejk-FcF$c^1;xs1lKs+; z;{-wW9j+5GHG!W4R6L!&LjW>$fTk=kh24&FPIu_8U~<_xx1DoGnYp4iLaZ@DmU)EB zcQCwPO4fXVTWo&x2ychoRKsRsD4upB{E``5rh$o=9Z#!La*vk6cgmo)>eL{rZ@NYe z7~oBFo?H#oYD`5zx6P;x==!6dmB_v;fWFnBz;ISD#OXbz6Zsr`)dS)zgLqsgo`css z#V5?Uw`t&m+4~o`I2`y@I`;OGpwkOJ8Zuc(v$~HV^(qNE` z!b8|ho5ON#Y_I3*vFv<|oo%&6j@*qzl~3HX4!yBo;EGi&a3+H>#2?>6)hqvI{bmP(K}y$1aYTwcK13URkxruO#u(MbCAi<$@q%8wLBl_S z!J{m%Y#Z>3>h_&<*WpMM>ceOdfAkVPPGXOIXq=u(Nt^8Vbjtql0uCRe6AXMI zu&$HOtW2q~>u4pOp#005f%@fRSczkNCB}qnquUC7nhEJ?^?F8XR*zhtfgv zdOB5qA+rVXVPZ9_j2|BL84%w=q<%dQ$C1FVE zI1Y9qY!t$b3X`b@t-|7(>rz9FR$&)jS72U)QHt7)>W*sF`A%YTzC@ig@+7u2!I5wT zJ*8ieyb;JgLc|klD_&klkz_opOGrw7ky2H)D@6gfubTpcZmKFhZw;W+SqkQDCJs%q z+50lm71{8esUwu<%hmZs=_BgOInT>QfvN}ffsdNMQROuAr zXo}ZxI=!Ns`?E-B-^qhah08REB8h|9UPr2PUSBvw&$)jPuey$PJ6v8zUshu~Pm&71 zp+1f{536s>;(5-({DAsnk(&A+QBHa!4@wWzzkn*BeoLYwYXxO6uXiH&q`n#Py838N z=NA--)Z6lSkV*Z&zvG3kXNgXi^L8esG@)+;rIb^tBt@FcUUs^?yE)6W(TcPje}&%= zzl%5zi(f(%MS7LcM=$*xt0w;Fe{}KF`aKYT0~o|xhdHvWl)+r-9`LEsa^h%9zn#-b zd{;0Re|Th{pfVanksNHpFqd;pUo=@yc{YLwy<^5s=jcdv=U(4|o{D$@;#Ccfz zCZZ_Pn}j}k;j65^GTk|S#*WiV_15`3z3HR5&c2k9%nmPd(v z;jd)$DSQ-p7QQMUUVnhm+UHgj2LI3%{AJrKD@sHCCD8upBmdK1t`dlctoA__}XUg3r@U(}W)} z{6|L#ehpY9%RqK1B}Kf-!cyPyE&xq`$z}9QcHxv=C{i^r}9CohbVbX{56Opc~P+`HQ(8(LzHW9@NI=IH>pYE4mG^B88+00!wto zi@0FBY~E1HzIq{EfmGyX9QbrA+)ACd_0A6JY|uMbQtb_LKA? zaSeMn-5$RAD!)ZWI95SzZDaZeA<zzTfuH*XV~VQRn-(Ke^Lm}QK-Nt2cK3pDkoKRvY9y!aVe|JaX5ED&^V&F zE!H(b6T|y29vFg26yovOhtKD%9^7np8tpr*2W=sfi4osqJ3X_-I2KwsSv=0B6~@>WL~B7Loc``&qABx} zY(?R0aTU8z_-Sygki@o4&J_LZB-;8~QJx)&TIWv74DJ2z#inUv!v@fV<8MGt?U`v; GgZ>Y3;w~T<#OPCl1pYhKI77@60 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 diff --git a/layer_multi_addestrato.c b/layer_multi_addestrato.c index d26f079..5fccdbc 100644 --- a/layer_multi_addestrato.c +++ b/layer_multi_addestrato.c @@ -2,7 +2,7 @@ #include "percettrone.h" #include "grafico.h" -int MAX_TRY = 10000; +int MAX_TRY = 500000; /* il tipo indica quali punti vogliamo disegnare nel grafico: @@ -13,7 +13,7 @@ int MAX_TRY = 10000; 4: NOR 5: XNOR */ -int tipo = 0; +int tipo = 2; // Soglia sigmoide double soglia_funzione_attivazione = 0.5; @@ -26,7 +26,7 @@ void main() allegro_init(); install_keyboard(); - set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0); + set_gfx_mode(GFX_AUTODETECT_WINDOWED, 1920, 1080, 0, 0); cls(tipo, 1); int colore_rosso = makecol(255, 0, 0); @@ -67,8 +67,8 @@ void main() //printf("\nCiclo %d\n", i); Punto input; - input.x = randomico(); - input.y = randomico(); + input.x = randomico_positivo(); + input.y = randomico_positivo(); double y_ext_1 = funzione_sigmoide(p_ext_1, input.x, input.y); @@ -84,10 +84,6 @@ void main() previsione = 0; } - /* Punto output; - output.x = y_ext_1; - output.y = y_ext_2; */ - printf("Inputs: %f:%f -> previsione: %d\n", input.x, input.y, previsione); if (previsione == 1) diff --git a/percettrone.h b/percettrone.h index 9a0e24c..2a01e33 100644 --- a/percettrone.h +++ b/percettrone.h @@ -48,8 +48,8 @@ double randomico() { } double randomico_positivo() { - // Genero numeri nell'intervallo [0,1] - return ((double)(rand() % 101 * 0.01)); + // Genero numeri nell'intervallo [-1,3] + return ((double)rand() / RAND_MAX) * 10.0f - 1.0f; } double funzione_sigmoide(Percettrone p, double x1, double x2) { @@ -61,9 +61,9 @@ double funzione_sigmoide(Percettrone p, double x1, double x2) { } void correggi_pesi(Percettrone *p, double grad_w1, double grad_w2, double grad_bias) { - (*p).bias = (*p).bias - (grad_bias * (*p).lre); - (*p).w1 = (*p).w1 - (grad_w1 * (*p).lre); - (*p).w2 = (*p).w2 - (grad_w2 * (*p).lre); + (*p).bias = (*p).bias + (grad_bias * (*p).lre); + (*p).w1 = (*p).w1 + (grad_w1 * (*p).lre); + (*p).w2 = (*p).w2 + (grad_w2 * (*p).lre); } void stampa_layer_uno(Percettrone p, double y, int x1, int x2, double errore) diff --git a/stampe_video.h b/stampe_video.h deleted file mode 100644 index e69de29..0000000