reinizio a metterci mano per completarlo
This commit is contained in:
@@ -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]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+25
-4
@@ -1,14 +1,15 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
char *file_pesi = "rete_pesi.bin";
|
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_immagini = "mnist/t10k-images.idx3-ubyte";
|
||||||
char *file_label = "mnist/t10k-labels.idx1-ubyte"; */
|
char *file_label = "mnist/t10k-labels.idx1-ubyte"; */
|
||||||
char *file_immagini = "mnist/train-images.idx3-ubyte";
|
//char *file_immagini = "mnist/train-images.idx3-ubyte";
|
||||||
char *file_label = "mnist/train-labels.idx1-ubyte";
|
//char *file_label = "mnist/train-labels.idx1-ubyte";
|
||||||
|
|
||||||
|
|
||||||
//#include "cifar-10/cifar10_manager.h";
|
//#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/data_batch_5.bin";
|
||||||
//char *file_immagini = "cifar-10/test_batch.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
|
// 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;
|
typedef unsigned char byte;
|
||||||
@@ -69,6 +70,8 @@ int previsione(double);
|
|||||||
void salvaReteNeurale(const char *, ReteNeurale *);
|
void salvaReteNeurale(const char *, ReteNeurale *);
|
||||||
ReteNeurale *caricaReteNeurale(const char *);
|
ReteNeurale *caricaReteNeurale(const char *);
|
||||||
|
|
||||||
|
void stampa_pesi_rete(ReteNeurale);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
################# INIZIALIZZAZIONI ################################
|
################# 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)
|
ReteNeurale inizializza_rete_neurale(int numero_layers, int numero_percettroni_iniziali, int numero_input)
|
||||||
{
|
{
|
||||||
|
srand(time(NULL));
|
||||||
ReteNeurale r;
|
ReteNeurale r;
|
||||||
r.layers = (Layer *)malloc(sizeof(Layer) * numero_layers);
|
r.layers = (Layer *)malloc(sizeof(Layer) * numero_layers);
|
||||||
r.size = numero_layers;
|
r.size = numero_layers;
|
||||||
@@ -394,3 +398,20 @@ ReteNeurale *caricaReteNeurale(const char *filename)
|
|||||||
fclose(file);
|
fclose(file);
|
||||||
return rete;
|
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");
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user