forse funziona
This commit is contained in:
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
#include "visualizzatore.h"
|
#include "visualizzatore.h"
|
||||||
|
|
||||||
#define NUM_LAYERS 5
|
#define NUM_LAYERS 4
|
||||||
|
|
||||||
#define PERCETTRONI_LAYER_0 256
|
#define PERCETTRONI_LAYER_0 256
|
||||||
#define INPUT_LAYER_0 3072
|
#define INPUT_LAYER_0 3072
|
||||||
@@ -8,10 +8,10 @@
|
|||||||
#define INPUT_LAYER_1 256
|
#define INPUT_LAYER_1 256
|
||||||
#define PERCETTRONI_LAYER_2 64
|
#define PERCETTRONI_LAYER_2 64
|
||||||
#define INPUT_LAYER_2 128
|
#define INPUT_LAYER_2 128
|
||||||
#define PERCETTRONI_LAYER_3 10
|
#define PERCETTRONI_LAYER_3 1
|
||||||
#define INPUT_LAYER_3 64
|
#define INPUT_LAYER_3 64
|
||||||
#define PERCETTRONI_LAYER_4 1
|
//#define PERCETTRONI_LAYER_4 1
|
||||||
#define INPUT_LAYER_4 10
|
//#define INPUT_LAYER_4 10
|
||||||
|
|
||||||
#define MAX_EPOCHE 100
|
#define MAX_EPOCHE 100
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ void main() {
|
|||||||
//inizializzo layer 3
|
//inizializzo layer 3
|
||||||
rete_neurale.layers[3] = inizializza_layer(PERCETTRONI_LAYER_3, INPUT_LAYER_3);
|
rete_neurale.layers[3] = inizializza_layer(PERCETTRONI_LAYER_3, INPUT_LAYER_3);
|
||||||
//inizializzo layer ULTIMO
|
//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);
|
printf("Numero immagini: %d\n",set.size);
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ void main() {
|
|||||||
|
|
||||||
int corrette = 0;
|
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);
|
//printf("\timmagine: %d\n", indice_set);
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "dataset_manager.h"
|
#include "dataset_manager.h"
|
||||||
|
|
||||||
double LRE = 0.2;
|
double LRE = 1.0;
|
||||||
double soglia_sigmoide = 0.5;
|
double soglia_sigmoide = 0.5;
|
||||||
|
|
||||||
typedef struct {
|
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
|
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]));
|
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)
|
//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("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]);
|
//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);
|
//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
|
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]));
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user