Example #1
0
        static void Main(string[] args)
        {
            ExemploCollection exemplos = Pergunta.PerguntarArquivoExemplos().Normalizar();
            var res = Pergunta.PerguntarResolução();
            ExemploCollection
                exemplosBons = exemplos.Clone() as ExemploCollection,
                exemplosMaus = exemplos.Clone() as ExemploCollection;

            exemplosBons.Exemplos = new List <Exemplo>(exemplosBons.Where(e => e.Saída == true));
            exemplosMaus.Exemplos = new List <Exemplo>(exemplosMaus.Where(e => e.Saída == false));
            Perceptron
                bons = new Perceptron(exemplosBons),
                maus = new Perceptron(exemplosMaus);

            bons.Exemplos.Máximos = exemplos.Máximos;
            maus.Exemplos.Máximos = exemplos.Máximos;
            Console.WriteLine("------- Perceptron apenas com exemplos bons -------");
            bons
            .Treinar()
            .TestarExemplos()
            .Renderizar(res[0], res[1], "bons.png");
            Console.WriteLine("------- Perceptron apenas com exemplos ruins -------");
            maus
            .Treinar()
            .TestarExemplos()
            .Renderizar(res[0], res[1], "maus.png");

            Console.WriteLine("------- Perceptron apenas com exemplos bons com dados ruins juntos -------");
            var bonsTemp = new List <Exemplo>((IEnumerable <Exemplo>)bons.Exemplos.Exemplos.ToArray().Clone());

            bons.Exemplos.Exemplos = new List <Exemplo>(bons.Exemplos.Exemplos.Concat(maus.Exemplos.Exemplos));
            bons.TestarExemplos();
            bons.Renderizar(res[0], res[1], "todos os exemplos quando treinado com bons.png");

            Console.WriteLine("------- Perceptron apenas com exemplos ruins com dados bons juntos -------");
            maus.Exemplos.Exemplos = new List <Exemplo>(maus.Exemplos.Exemplos.Concat(bonsTemp));
            maus.TestarExemplos();
            maus.Renderizar(res[0], res[1], "todos os exemplos quando treinado com ruins.png");
        }
Example #2
0
        static void Main(string[] args)
        {
            var perceptron = new Perceptron(Pergunta.PerguntarArquivoExemplos());

            perceptron.PropTreinamento = .7;
            int op = 0;

            while (true)
            {
                op = Pergunta.Perguntar("\nEscolha uma opção:\n" +
                                        $"  1 - Treinar\n" +
                                        $"  2 - Alterar a taxa de aprendizagem ({perceptron.Magnitude})\n" +
                                        $"  3 - Alterar a porcentagem de treinamento ({Math.Round(perceptron.PropTreinamento * 100).ToString()}%)\n" +
                                        $"  4 - Gerar um gráfico\n" +
                                        $"  5 - Testar todos os exemplos\n" +
                                        $"  6 - Resetar o treinamento\n" +
                                        $"  7 - Testar um novo set de valores\n" +
                                        $"  8 - Slideshow de evolução\n" +
                                        $"  0 - Sair\n", v => Convert.ToInt32(v), "0", _ => null);
                Console.Clear();
                switch (op)
                {
                case 0:
                    return;

                case 1:
                    perceptron.Treinar(Pergunta.Perguntar("Detalhar épocas?", v => v.ToLower().Contains("s"), "n", _ => null));
                    break;

                case 2:
                    perceptron.Magnitude = Pergunta.Perguntar("Digite a nova taxa de aprendizagem", v => Convert.ToDouble(v), perceptron.Magnitude.ToString(), v => v > 0 ? null : "Precisa ser um número maior que zero");
                    break;

                case 3:
                    perceptron.PropTreinamento = Pergunta.Perguntar("Digite a nova porcentagem de treinamento", v => Convert.ToDouble(v) / 100, Math.Round(perceptron.PropTreinamento * 100).ToString(), v => v > 0 && v <= 1 ? null : "Valor precisa ser maior que zero e menor ou igual a 100");
                    break;

                case 4:
                    var res = Pergunta.PerguntarResolução();
                    perceptron.Renderizar(res[0], res[1], Pergunta.Perguntar("Digite o nome do arquivo de saída", t => t, $"{Math.Round(perceptron.PropTreinamento * 100)}%.png", _ => null));
                    break;

                case 5:
                    perceptron.TestarExemplos();
                    break;

                case 6:
                    perceptron.Reset();
                    break;

                case 7:
                    perceptron.TestarConsole();
                    break;

                case 8:
                    var resol       = Pergunta.PerguntarResolução();
                    var incrementos = Pergunta.Perguntar("Com incrementos de quantos %?", v => Convert.ToInt32(v), "5", v => v > 0 && v <= 50 ? null : "O valor precisa ser maior que zero e menor ou igual que 50");
                    for (int i = 0; i <= 100; i = i == 100 ? int.MaxValue : Math.Min(i + incrementos, 100))
                    {
                        perceptron.PropTreinamento = (double)i / 100;
                        perceptron.Treinar().Renderizar(resol[0], resol[1], $"{i}%.png");
                    }
                    break;

                default:
                    Console.WriteLine("Opção não reconhecida");
                    break;
                }
            }
        }