static void Main(string[] args) { Stopwatch clock = new Stopwatch(); TimeSpan session = new TimeSpan(); Reseau network; if (File.Exists(@"../network_config.ini")) // Si network_config.ini existe { Console.WriteLine("Fichier de configuration trouvé : chargement..."); network = Reseau.Load(); // On le charge } else // Sinon { Console.WriteLine("Fichier de configuration manquant dans : " + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + @"../network_config.ini"); Console.WriteLine("génération d'un nouveau réseau..."); network = new Reseau(3, new int[] { 10 }, 1); // On génére un nouveau réseau network.SetLearningRate(Convert.ToDouble(0.1)); } Data[] donnees = JsonConvert.DeserializeObject <Data[]>(File.ReadAllText(@"../data.json"), new JsonSerializerSettings { MaxDepth = int.MaxValue }); // On charge les données Random R = new Random(); while (true) { clock.Reset(); clock.Start(); for (int n = 0; n < 1; n++) // Nombre de données entrainées par session { Data d = donnees[R.Next(0, donnees.Length)]; for (int i = 0; i < 1000; i++) // Nombre d'entrainements par donnée { // Ne pas oublier de mapper les valeurs ! network.Train(new double[] { d.Valeur0 / 255.0, d.Valeur1 / 255.0, d.Valeur2 / 255.0 }, new double[] { d.Note / 10.0 }); // En entrée : RGB, en sortie : note } } Console.Clear(); session += clock.Elapsed; Console.WriteLine("Session : " + String.Format("{0:00}:{1:00}:{2:00}.{3:00}", session.Hours, session.Minutes, session.Seconds, session.Milliseconds / 10)); network.time_trained += clock.Elapsed; Console.WriteLine("Total : " + String.Format("{0:00}:{1:00}:{2:00}.{3:00}", network.time_trained.Hours, network.time_trained.Minutes, network.time_trained.Seconds, network.time_trained.Milliseconds / 10)); Console.WriteLine("Erreur moyenne : " + network.mean_error); network.Save(); } }
static void Main(string[] args) { bool LOG_DATA = false; Reseau test = new Reseau(2, new int[] { 5 }, 1); test.SetLearningRate(0.1); Console.WriteLine(); string data = ""; int iteration = 0; while (true) { for (int i = 0; i < 100; i++) { test.Train(new double[] { 0, 0 }, new double[] { 1 }); test.Train(new double[] { 0, 1 }, new double[] { 1 }); test.Train(new double[] { 1, 0 }, new double[] { 0 }); test.Train(new double[] { 1, 1 }, new double[] { 0 }); Console.WriteLine("Sortie (Itération " + (iteration + 1) + ") :"); Console.WriteLine(Math.Abs(test.mean_error)); Console.WriteLine("-----"); data += (Convert.ToString(Math.Abs(test.mean_error))) + '\n'; iteration++; } Console.Read(); } if (LOG_DATA) { System.IO.File.WriteAllText(@"R:\4 - travail\Projet\aergo_data_" + test.learning_rate + ".txt", data); } // ------------------------------------------------------------ }
static void Main(string[] args) { if (!File.Exists(@"../network_config.ini")) // Si network_config.ini n'existe pas { Console.WriteLine("Erreur : quelqu'un a mal fait son travail (moi)"); Environment.Exit(0); } else // S'il existe { Reseau network = Reseau.Load(); // On le charge // network.Save(); Console.Read(); network.Feed(new double[] { Convert.ToDouble(args[0]) / 255.0, Convert.ToDouble(args[1]) / 255.0, Convert.ToDouble(args[2]) / 255.0 }); double[] guess = network.output.ToArrayVector(); network.input.Debug("Entrée"); network.output.Debug("Sortie"); Console.WriteLine(guess[0] * 1.0); // On donne la note devinée } }