From e4d41d2003893dbf35494bde06fa7378d4fa62fc Mon Sep 17 00:00:00 2001 From: mirimatcode Date: Sat, 8 Feb 2025 19:44:09 +0100 Subject: [PATCH] forse funziona --- classificatore_singolo | Bin 22008 -> 22008 bytes classificatore_singolo.c | 12 ++++++------ percettroni.h | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/classificatore_singolo b/classificatore_singolo index 082dc53b1b0ba5c0770f30f559cb2912bd9d6b47..bf264a442555d833bbe5c7c2f41cc972021c89dc 100755 GIT binary patch delta 850 zcmYk3Ur1AN6vyw`-OUYjcVgmVYg6XjC`*mWi2kVMwI5++MqprNxD=wIl~gaLvC76s zg|l$f9t@NW9~xc|Az^D!K81Ufph63p8JHR-Lfp>X40gDe-?_j0Ip6bdV;nZdA*utt z&%~w8C+EYEX1i};v#)iohK)9b3kO>(hi#_23-UC7qX=s)<$B?HHOH-r=aP8I>=aZl zfudy(wpj&?ne(6pKbUU<%dma!G^-L7&?1jojsr%m|H%T z{iGr*ioyas3!KpfrFh^ydm@-}IgSNprqp&*`k#t2BZX9daY(~)K`E4mblK3iB^3&* z(2NvGvvtJAipfnCkpc@y(HN)O(qn-HHG|`&9yoztOOHc0?sYVaxRx%(FAamgdzi-o zN4dL=ihL{~;Zf#~n^=&er-O;tR%X1QB~=cG09ENT5x82nNM?srGN z^BgDkPyAJspcGCIB&^Sx+Lc8`@k=2}9cmZ*FA}x{gOn!aWxKTw7pZm$sk2z%Y%qAT z<5sZK*=Sg%L8%K!FK7tgIxoWubh=!$-X@pXxF%XRS+MXa$yBW?j`MP_t2YOuhT@6J zF36`VrID&TN#|8Md*z2!J(`kPa=AK#@sZ|e-Zsh4^Y8fF9Li&%>p|MpCv>=N@DU}q zT}aUg3S^(#qsO>Li(`jcz$?SyKbjnZ$$rU7?L5%k{E<@tO>$LzjRrvWHFyB5`0Cgf an3V%;Ko9M>qq#!wRr@9L%BP!O^8Wyr{WKW> delta 891 zcmYjOT}TvR6rH<2xm&KIlv=p%7P`8mV%CZ&nQQskB!Xl;C@5Ki5JhNePpQH9w@s#U z7c!GDFiIq_21O{^#Y$5Ml%jm9gdW!QA=0u<$mz})Xvv90j*^yIyrfnKmwd%^Q0+T>tS*QRU?0oEiDKzBU#(%(tePEq60HZiO$O$8&MX zMiX_j$XnB}%4S4goCPZIZQK=bquZKlwsg2OuF6P<3i*Mx2uS9MEyZbBIJhYzv5-(b zCrE5gfH{7gG*X{Rnq~tUH=npMJ}32o--HStHtOR{njp3%=0Q5X zPAr1680jeG8&@@lA{zv;Y0!Xmj#O7Ax$9&|jzg8JeG|L<-YSVfweot?-d*9uulMo=mbCn#l$BCfe~v zQe=UVR4Ic%{FsHzaEKV+teotYjDQmBAEkLFv7Qp*)DY%e)2--2+>C8x@vB*N8LXz8*%|iUm z;D(~~^vt~E?FAgS%G=fjDY}tz&RA0%xpI~Bdf3wg4G>jK#*6hFcY)4JbPmdG87;bf zL29}Dh{$%`amzL)>h)jr;bG*&O5+}SvJg64cKC_Rm0&bc&O7BgSC$$5Is-n+ErV7W zj{eex_1{rzMpoR5K(obTB>=T@MnRqqta4pp7C<%*pZE+x*&}qDLBu_!>E>24saC6e Is`R1$FKY=;y8r+H diff --git a/classificatore_singolo.c b/classificatore_singolo.c index d744719..dc6f534 100644 --- a/classificatore_singolo.c +++ b/classificatore_singolo.c @@ -1,6 +1,6 @@ #include "visualizzatore.h" -#define NUM_LAYERS 5 +#define NUM_LAYERS 4 #define PERCETTRONI_LAYER_0 256 #define INPUT_LAYER_0 3072 @@ -8,10 +8,10 @@ #define INPUT_LAYER_1 256 #define PERCETTRONI_LAYER_2 64 #define INPUT_LAYER_2 128 -#define PERCETTRONI_LAYER_3 10 +#define PERCETTRONI_LAYER_3 1 #define INPUT_LAYER_3 64 -#define PERCETTRONI_LAYER_4 1 -#define INPUT_LAYER_4 10 +//#define PERCETTRONI_LAYER_4 1 +//#define INPUT_LAYER_4 10 #define MAX_EPOCHE 100 @@ -54,7 +54,7 @@ void main() { //inizializzo layer 3 rete_neurale.layers[3] = inizializza_layer(PERCETTRONI_LAYER_3, INPUT_LAYER_3); //inizializzo layer ULTIMO - rete_neurale.layers[4] = inizializza_layer(PERCETTRONI_LAYER_4, INPUT_LAYER_4); + //rete_neurale.layers[4] = inizializza_layer(PERCETTRONI_LAYER_4, INPUT_LAYER_4); printf("Numero immagini: %d\n",set.size); @@ -64,7 +64,7 @@ void main() { int corrette = 0; - for(int indice_set = 0; indice_set < 100; indice_set++) { + for(int indice_set = 0; indice_set < 1000; indice_set++) { //printf("\timmagine: %d\n", indice_set); diff --git a/percettroni.h b/percettroni.h index bf9c990..41dc440 100644 --- a/percettroni.h +++ b/percettroni.h @@ -12,7 +12,7 @@ #include #include "dataset_manager.h" -double LRE = 0.2; +double LRE = 1.0; double soglia_sigmoide = 0.5; typedef struct { @@ -167,14 +167,14 @@ void correggi_layer_interni(ReteNeurale *rete, double **gradienti, double **sigm for(int indice_peso = 0; indice_peso < rete->layers[indice_layer].percettroni[indice_percettrone].size; indice_peso++) {//Numero pesi gradienti[indice_layer][indice_percettrone] = gradienti[rete->size-1][0] * (sigmoidi[indice_layer][indice_percettrone] * (1 - sigmoidi[indice_layer][indice_percettrone])); - rete->layers[indice_layer].percettroni[indice_percettrone].pesi[indice_peso] -= (gradienti[indice_layer][indice_percettrone] * LRE * sigmoidi[indice_layer-1][indice_percettrone]); + rete->layers[indice_layer].percettroni[indice_percettrone].pesi[indice_peso] += (gradienti[indice_layer][indice_percettrone] * LRE * sigmoidi[indice_layer-1][indice_percettrone]); //if(indice_layer == 3) // printf("qui ci arrivo layer: %d, percettrone: %d, input:%d, peso: %f\n", indice_layer, indice_percettrone, indice_peso, rete->layers[indice_layer].percettroni[indice_percettrone].pesi[indice_peso]); //printf("gradiente applicato %f, sigmoide %f\n", gradienti[indice_layer][indice_percettrone], sigmoidi[indice_layer][indice_percettrone]); } - rete->layers[indice_layer].percettroni[indice_percettrone].bias -= (gradienti[indice_layer][indice_percettrone] * LRE); + rete->layers[indice_layer].percettroni[indice_percettrone].bias += (gradienti[indice_layer][indice_percettrone] * LRE); //printf("bias: %f\n", rete->layers[indice_layer].percettroni[indice_percettrone].bias); } } @@ -187,9 +187,9 @@ void correggi_layer_input(Layer *layer, double **gradienti, double **sigmoidi, b for(int indice_peso = 0; indice_peso < layer->percettroni->size; indice_peso++) { //Numero pesi gradienti[indice_layer][indice_percettrone] = gradienti[n_layers-1][0] * (sigmoidi[indice_layer][indice_percettrone] * (1 - sigmoidi[indice_layer][indice_percettrone])); - layer->percettroni[indice_percettrone].pesi[indice_peso] -= (gradienti[indice_layer][indice_percettrone] * LRE * inputs[indice_peso]); + layer->percettroni[indice_percettrone].pesi[indice_peso] += (gradienti[indice_layer][indice_percettrone] * LRE * inputs[indice_peso]); } - layer->percettroni[indice_percettrone].bias -= (gradienti[indice_layer][indice_percettrone] * LRE); + layer->percettroni[indice_percettrone].bias += (gradienti[indice_layer][indice_percettrone] * LRE); } }