niente da fare non funge, riprovo ad addestrarla

This commit is contained in:
2025-02-09 00:16:05 +01:00
parent b6f19921ba
commit 7c7fcedbaa
11 changed files with 241 additions and 135 deletions

View File

@@ -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");