/// <summary> /// Crée une nouvelle instance de <see cref="NeuralNetwork"/> a partire d'une sauvegarde. /// <param name="save">La sauvegarde</param> /// </summary> public NeuralNetwork(NeuralSave save) { this.InputsCount = save.InputsCount; this.HiddenLayersCount = save.HiddenLayersCount; this.HiddenLayersNeuronsCount = save.HiddenLayersNeuronsCount; this.OutputsCount = save.OutputsCount; /* Initialise le nombre de neurones dans le layers d'entrée. */ this.Input = new float[this.InputsCount]; /* Initialise le nombre de layers dans la partie cachée. */ this.Hidden = new float[this.HiddenLayersCount][]; /* Initialise le nombre de neurones dans chaque layers de la partie cachée. */ for (int i = 0; i < this.Hidden.Length; i++) { this.Hidden[i] = new float[this.HiddenLayersNeuronsCount[i]]; } /* Initialise le nombre de neurones dans le layers de sortie. */ this.Output = new float[OutputsCount]; /* Initialise le nombre de dentries qui relie le layers d'entrée et le premier layer de la couche cachée. */ this.Wi = save.WeightInputs; /* Initialise le nombre de dentries qui relie chaque layers de la face cachée entre eux. * NOTE : Initialise aussi les poids qui relie la derniere couche caché avec la couche de sortie! */ this.Wh = save.WeightHidden; }
/// <summary> /// Initialise les données via le contenue text d'un fichier json. /// <param name="json">Le contenue d'un fichier json</param> /// </summary> public void FromJson(string json) { NeuralSave s = JsonConvert.DeserializeObject <NeuralSave>(json); this.InputsCount = s.InputsCount; this.HiddenLayersCount = s.HiddenLayersCount; this.HiddenLayersNeuronsCount = s.HiddenLayersNeuronsCount; this.OutputsCount = s.OutputsCount; this.WeightInputs = s.WeightInputs; this.WeightHidden = s.WeightHidden; this.dna = s.dna; }
public NeuralSave Save() { NeuralSave save = new NeuralSave(); save.InputsCount = InputsCount; save.HiddenLayersCount = HiddenLayersCount; save.HiddenLayersNeuronsCount = HiddenLayersNeuronsCount; save.OutputsCount = OutputsCount; save.WeightInputs = Wi; save.WeightHidden = Wh; save.dna = new DNA(this); return(save); }
// Use this for initialization void Start() { /* Crée un réseau de neurones */ NeuralNetwork n = new NeuralNetwork(4, 1, new int[] { 4 }, 2); /* Initialise le poids des dentries */ n.InitializeWeight(); /* Présente a l'entrée des valeurs */ n.SetInput(new float[] { 0, 1, 0, 1 }); /* Propage les donnés de l'entrées vers la sortie */ n.Propagate(); /* Récupere les valeurs des neurones de sortie */ var r = n.GetOutput(); /* Affihe les valeurs */ foreach (var result in r) { Debug.Log(result); } /* Sauvegarde le reseau de neurones */ var save = n.Save(); /* Le fichier JSON ou seras stocker la sauvegarde du reseau de neurones */ string path = "/Users/alexis/Desktop/NeuralNetwork.json"; /* Detruit le fichier si il existe deja */ if (File.Exists(path)) { File.Delete(path); } /* Crée et ouvre le fichier */ var fs = File.OpenWrite(path); /* Recupere les données de la sauvegarde dans un tableau de byte */ var data = System.Text.Encoding.UTF8.GetBytes(save.ToJson()); /* Ecris dans le fichier les données */ fs.Write(data, 0, data.Length); /* Libère les ressources */ fs.Close(); fs = File.OpenRead(path); List <byte> dataRead = new List <byte>(); byte[] buffer = new byte[256]; int readResult = 0; do { readResult = fs.Read(buffer, 0, buffer.Length); System.Array.Resize(ref buffer, readResult); dataRead.AddRange(buffer); }while(readResult > 0); save = new NeuralSave(); save.FromJson(System.Text.Encoding.UTF8.GetString(dataRead.ToArray())); n = new NeuralNetwork(save); n.InitializeWeight(save.dna); /* Présente a l'entrée des valeurs */ n.SetInput(new float[] { 0, 1, 0, 1 }); /* Propage les donnés de l'entrées vers la sortie */ n.Propagate(); /* Récupere les valeurs des neurones de sortie */ r = n.GetOutput(); /* Affihe les valeurs */ foreach (var result in r) { Debug.Log(result); } }