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) { 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 } }