public Perceptron Treinar(bool verbose = false) { Console.WriteLine($"Treinando perceptron usando os {QuantTreinamento} primeiros exemplos"); int epoca = 0, erroTotal; var paraTreinar = Exemplos.Take(QuantTreinamento).ToArray(); var início = DateTime.Now; while (true) { erroTotal = 0; foreach (var exemplo in paraTreinar) { var erro = Sinal(exemplo.Saída) - Sinal(Testar(exemplo.Normalizados)); if (verbose) { Console.WriteLine($" Acertou: {(erro == 0 ? "Sim" : "Não")}: {exemplo.ToString(this)}"); } Bias += Magnitude * erro; for (int i = 0; i < Entradas; i++) { Pesos[i] += Magnitude * erro * exemplo.Normalizados[i]; } erroTotal += erro == 0 ? 0 : 1; } if (verbose) { Console.WriteLine($"Época {epoca}, Total de erros: {erroTotal}\nBias: {Bias.ToString("0.00")}\nPesos: {string.Join(", ", Pesos.Select(p=>p.ToString("0.00")))}"); } if (erroTotal == 0) { break; } else { epoca++; } } Console.WriteLine($"Treinamento completo! Levou {epoca} épocas e {(DateTime.Now - início).TotalSeconds} segundos."); return(this); }