diff --git a/codice_ricordo.c b/codice_ricordo.c new file mode 100644 index 0000000..247720c --- /dev/null +++ b/codice_ricordo.c @@ -0,0 +1,17 @@ +#include "percettroni.h" + +#define EPOCHE 10 + +void main() { + ReteNeurale rete = inizializza_rete_neurale(3, 8, 2); + stampa_pesi_rete(rete); + + Dataset *xor; + xor = crea_dataset_xor(); + + for(int epoca = 0; epoca < EPOCHE; epoca++) { + for(int indice_istanza = 0; indice_istanza < xor->size; indice_istanza++) { + elabora_sigmoidi(rete, xor->istanze[indice_istanza]); + } + } +} \ No newline at end of file diff --git a/percettroni.h b/percettroni.h index 602b2ae..f98e84c 100644 --- a/percettroni.h +++ b/percettroni.h @@ -1,14 +1,15 @@ #include #include #include +#include char *file_pesi = "rete_pesi.bin"; -#include "mnist/mnist_manager.h" +//#include "mnist/mnist_manager.h" /* char *file_immagini = "mnist/t10k-images.idx3-ubyte"; char *file_label = "mnist/t10k-labels.idx1-ubyte"; */ -char *file_immagini = "mnist/train-images.idx3-ubyte"; -char *file_label = "mnist/train-labels.idx1-ubyte"; +//char *file_immagini = "mnist/train-images.idx3-ubyte"; +//char *file_label = "mnist/train-labels.idx1-ubyte"; //#include "cifar-10/cifar10_manager.h"; @@ -19,7 +20,7 @@ char *file_label = "mnist/train-labels.idx1-ubyte"; // char *file_immagini = "cifar-10/data_batch_5.bin"; //char *file_immagini = "cifar-10/test_batch.bin"; -// #include "xor_manager.h" +#include "xor_manager.h" // Siccome il char รจ un byte che rappresenta il valore tra 0 e 255. Per evitare confusioni definisco il tipo "byte" come in Java typedef unsigned char byte; @@ -69,6 +70,8 @@ int previsione(double); void salvaReteNeurale(const char *, ReteNeurale *); ReteNeurale *caricaReteNeurale(const char *); +void stampa_pesi_rete(ReteNeurale); + /* ################# INIZIALIZZAZIONI ################################ */ @@ -112,6 +115,7 @@ Layer inizializza_layer(int n_percettroni, int n_pesi) ReteNeurale inizializza_rete_neurale(int numero_layers, int numero_percettroni_iniziali, int numero_input) { + srand(time(NULL)); ReteNeurale r; r.layers = (Layer *)malloc(sizeof(Layer) * numero_layers); r.size = numero_layers; @@ -394,3 +398,20 @@ ReteNeurale *caricaReteNeurale(const char *filename) fclose(file); return rete; } + + +/* + ################ STAMPE ############################ +*/ +void stampa_pesi_rete(ReteNeurale rete) { + for(int indice_layer = 0; indice_layer < rete.size; indice_layer++) { + printf("\nLivello %d", indice_layer); + for(int indice_percettrone = 0; indice_percettrone < rete.layers[indice_layer].size; indice_percettrone++) { + printf("\n\tPercettrone %d", indice_percettrone); + for(int indice_peso = 0; indice_peso < rete.layers[indice_layer].percettroni[indice_percettrone].size; indice_peso++) { + printf("\n\t\tPeso %d: %f", indice_peso, rete.layers[indice_layer].percettroni[indice_percettrone].pesi[indice_peso]); + } + } + } + printf("\n"); +} \ No newline at end of file