niente da fare non funge, riprovo ad addestrarla
This commit is contained in:
@@ -1,14 +1,3 @@
|
||||
/*
|
||||
Definisco i percettroni della rete neurale per il dataset CIFAR10
|
||||
Struttura della rete:
|
||||
Livello 1: 256 percettroni con 3072 input ciascuno
|
||||
Livello 2: 128 percettroni con 256 input ciascuno
|
||||
Livello output: 10 percettroni con 128 input ciascuno
|
||||
|
||||
In output ci sono 10 percettroni, ognuno di essi è associato ad una categoria del CIFAR10. Alla fine dell'addestramento, la previsione sarà
|
||||
data dal percettrone di output che avrà il valore 1 rispetto agli altri 9.
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
#include "dataset_manager.h"
|
||||
|
||||
@@ -162,6 +151,7 @@ int previsione(double valore) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Questa funzione prende la matrice dei gradienti e la matrice delle sigmoidi per correggere tutti i layer tranne quello di ingresso
|
||||
void correggi_layer_interni(ReteNeurale *rete, double **gradienti, double **sigmoidi) {
|
||||
|
||||
for(int indice_layer = rete->size-1; indice_layer > 0; indice_layer--) {
|
||||
@@ -183,6 +173,7 @@ void correggi_layer_interni(ReteNeurale *rete, double **gradienti, double **sigm
|
||||
}
|
||||
}
|
||||
|
||||
//Questa funzione prende tutti i parametri della precedente + gli input passati dal dataset per correggere il layer di ingresso
|
||||
void correggi_layer_input(Layer *layer, double **gradienti, double **sigmoidi, byte *inputs, int n_layers) {
|
||||
//L'indice del layer d'ingresso che prende byte per input
|
||||
int indice_layer = 0;
|
||||
@@ -196,6 +187,7 @@ void correggi_layer_input(Layer *layer, double **gradienti, double **sigmoidi, b
|
||||
}
|
||||
}
|
||||
|
||||
//Una volta finito il ciclo delle epoche viene salvato lo stato della rete neurale
|
||||
void salvaReteNeurale(const char *filename, ReteNeurale *rete) {
|
||||
FILE *file = fopen(filename, "wb");
|
||||
if (!file) {
|
||||
@@ -223,6 +215,7 @@ void salvaReteNeurale(const char *filename, ReteNeurale *rete) {
|
||||
fclose(file);
|
||||
}
|
||||
|
||||
//Quando parte il programma carica lo stato della rete neurale dal file oppure inizializza una rete neurale con pesi random se il file non esiste
|
||||
ReteNeurale *caricaReteNeurale(const char *filename) {
|
||||
FILE *file = fopen(filename, "rb");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user