2
我正在玩AForge。我從AForge網站複製了這個例子。C#AForge,程序在學習階段死機
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AForge;
using AForge.Neuro;
using AForge.Math;
using AForge.Neuro.Learning;
namespace NeuralNetTest
{
class Program
{
static void Main(string[] args)
{
// initialize input and output values
double[][] input = new double[4][] {
new double[] {0, 0}, new double[] {0, 1},
new double[] {1, 0}, new double[] {1, 1}
};
double[][] output = new double[4][] {
new double[] {0}, new double[] {1},
new double[] {1}, new double[] {0}
};
Console.WriteLine("Tworzę sieć neuronową...");
// create neural network
ActivationNetwork network = new ActivationNetwork(
new SigmoidFunction(2),
2, // two inputs in the network
2, // two neurons in the first layer
1); // one neuron in the second layer
// create teacher
BackPropagationLearning teacher = new BackPropagationLearning(network);
Console.WriteLine("Sieć neuronowa uczy się...");
while (true)
{
double error = teacher.RunEpoch(input, output);
if (error < 0.001) break;
}
Console.WriteLine("Uczenie sieci neuronowej zakończone.");
Console.WriteLine("Sieć jest gotowa obliczać XOR.");
while (true)
{
Console.WriteLine("Wpisz pierwszy bajt: (0 lub 1):");
double f1 = (double)Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Wpisz drugi bajt: (0 lub 1):");
double f2 = (double)Convert.ToInt32(Console.ReadLine());
double[] netout = network.Compute(new double[2] { f1, f2 });
Console.WriteLine("{0} XOR {1} to {2}.", (int)f1, (int)f2, netout[0]);
Console.ReadLine();
}
}
}
}
正如你所看到的,它應該能夠計算兩位的XOR。 如何。它凍結學習!它工作正常,但現在每當錯誤是0.26981832999407546時它就會凍結。
它正在工作。現在,BOOM,它不起作用,到底是什麼? 在此先感謝。
我讓它學習了一個小時......它凍結在約0.3的東西 –
今天,當我運行它時,它大部分工作,但只是有時它會凍結。也許我的AI變得自我意識,並且它不想一直學習相同的東西? :■ –