示例#1
0
        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();
            }
        }
示例#2
0
        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);
            }
            // ------------------------------------------------------------
        }
示例#3
0
        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
            }
        }