settata topologia deep feed forward
This commit is contained in:
Binary file not shown.
@@ -4,7 +4,7 @@
|
|||||||
// Scelgo quale categoria voglio identificare. nel caso dello xor -1
|
// Scelgo quale categoria voglio identificare. nel caso dello xor -1
|
||||||
#define CATEGORIA 7
|
#define CATEGORIA 7
|
||||||
#define NUM_LAYERS 4
|
#define NUM_LAYERS 4
|
||||||
#define PERCETTRONI_LAYER_0 64
|
#define PERCETTRONI_LAYER_0 32
|
||||||
#define MAX_EPOCHE 100
|
#define MAX_EPOCHE 100
|
||||||
|
|
||||||
//1 relu, 2 sigmoide
|
//1 relu, 2 sigmoide
|
||||||
@@ -80,6 +80,8 @@ void main()
|
|||||||
|
|
||||||
errore_totale += pow(gradiente_errore, 2) * 0.5;
|
errore_totale += pow(gradiente_errore, 2) * 0.5;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Derivata funzione attivazione
|
// Derivata funzione attivazione
|
||||||
double derivata_funzione_out = derivata_sigmoide(funzioni_attivazione[NUM_LAYERS - 1][0]);
|
double derivata_funzione_out = derivata_sigmoide(funzioni_attivazione[NUM_LAYERS - 1][0]);
|
||||||
// if (derivata_funzione_out == 0.0) derivata_funzione_out = 1;
|
// if (derivata_funzione_out == 0.0) derivata_funzione_out = 1;
|
||||||
@@ -87,8 +89,11 @@ void main()
|
|||||||
// Gradiente del percettrone output
|
// Gradiente del percettrone output
|
||||||
gradienti[NUM_LAYERS - 1][0] = gradiente_errore * derivata_funzione_out;
|
gradienti[NUM_LAYERS - 1][0] = gradiente_errore * derivata_funzione_out;
|
||||||
|
|
||||||
|
//Crasha nella discesa del gradiente all'immagine indice 16 quando metto troppi percettroni
|
||||||
discesa_gradiente(rete_neurale, funzioni_attivazione, gradienti, TIPO_FUNZIONE);
|
discesa_gradiente(rete_neurale, funzioni_attivazione, gradienti, TIPO_FUNZIONE);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// A questo punto ho tutti i gradienti dei percettroni, non mi resta che trovare i gradienti dei pesi e correggerli
|
// A questo punto ho tutti i gradienti dei percettroni, non mi resta che trovare i gradienti dei pesi e correggerli
|
||||||
|
|
||||||
// Correggo il livello output
|
// Correggo il livello output
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ ReteNeurale inizializza_rete_neurale(int numero_layers, int numero_percettroni_i
|
|||||||
r.size = numero_layers;
|
r.size = numero_layers;
|
||||||
|
|
||||||
// Funzione esponenziale inversa layer 5
|
// Funzione esponenziale inversa layer 5
|
||||||
for (int livello = 0; livello < numero_layers; livello++)
|
/* for (int livello = 0; livello < numero_layers; livello++)
|
||||||
{
|
{
|
||||||
double esponente = (double)livello / (double)numero_layers;
|
double esponente = (double)livello / (double)numero_layers;
|
||||||
double frazione = (double)1 / (double)numero_percettroni_iniziali;
|
double frazione = (double)1 / (double)numero_percettroni_iniziali;
|
||||||
@@ -124,6 +124,24 @@ ReteNeurale inizializza_rete_neurale(int numero_layers, int numero_percettroni_i
|
|||||||
r.layers[livello] = inizializza_layer(numero_percettroni_livello, numero_input);
|
r.layers[livello] = inizializza_layer(numero_percettroni_livello, numero_input);
|
||||||
else
|
else
|
||||||
r.layers[livello] = inizializza_layer(numero_percettroni_livello, r.layers[livello - 1].size);
|
r.layers[livello] = inizializza_layer(numero_percettroni_livello, r.layers[livello - 1].size);
|
||||||
|
} */
|
||||||
|
|
||||||
|
for (int livello = 0; livello < numero_layers; livello++)
|
||||||
|
{
|
||||||
|
if (livello == 0) {
|
||||||
|
printf("Layer %d -> percettroni: %d\n", livello, numero_percettroni_iniziali);
|
||||||
|
r.layers[livello] = inizializza_layer(numero_percettroni_iniziali, numero_input);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(livello < numero_layers -1) {
|
||||||
|
printf("Layer %d -> percettroni: %d\n", livello, numero_percettroni_iniziali*2);
|
||||||
|
r.layers[livello] = inizializza_layer(numero_percettroni_iniziali * 2, r.layers[livello - 1].size);
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
printf("Layer %d -> percettroni: %d\n", livello, 1);
|
||||||
|
r.layers[livello] = inizializza_layer(1, r.layers[livello - 1].size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
|
|||||||
BIN
visualizzatore
BIN
visualizzatore
Binary file not shown.
Reference in New Issue
Block a user