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 <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <time.h>
|
||||
|
||||
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");
|
||||
}
|
||||
Reference in New Issue
Block a user