그래서 Encog를 처음 접했고 Mr.Heaton의 Encog에 대한 C#의 소개를 따라 가면서 손을 썼습니다. 나의 간단한 운동은 나이에 따라 사람의 '정신 이상'을 예측하는 네트워크를 개발하고 훈련 세트를 제공하는 것이 었습니다. 그러나 나는이 문제에 직면하고있다.Encog 입력 레이어 크기 오류?
"6의 입력 레이어 크기는 교육 입력 크기 1과 일치해야합니다."
나는 어딘가에서 큰 실수를하고 있다고 확신한다. 여기 나의 간단한 코드가있다.
public static double[][] InsanityInput =
{
//age
new double[1]{20},
new double[1]{25},
new double[1]{30},
new double[1]{35},
new double[1]{40},
new double[1]{45}
};
public static double[][] InsanityIDEAL =
{
//insanity level
new double[1]{100},
new double[1]{90},
new double[1]{75},
new double[1]{60},
new double[1]{30},
new double[1]{20}
};
static void Main(string[] args)
{
BasicNetwork network = new BasicNetwork();
network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 6)); //input layer
network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 6)); //hidden layer
network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 1)); //output layer
network.Structure.FinalizeStructure();
network.Reset();
INeuralDataSet trainingSet = new BasicNeuralDataSet(InsanityInput, InsanityIDEAL);
ITrain train = new ResilientPropagation(network, trainingSet);
int epoch = 1;
do
{
train.Iteration();
Console.WriteLine("Epoch #" + epoch + " Error:" + train.Error);
epoch++;
} while((epoch<5000)&&(train.Error > 0.001));
double[] inputArray = {27}; //input the age
INeuralData inputData = new BasicNeuralData(inputArray);
INeuralData outputData = network.Compute(inputData);
Console.WriteLine("\nNetwork Prediction: " + outputData.ToString());
Console.ReadKey();
}
실제로 Mr.Heaton의 튜토리얼에서 논의 된 코드와 같습니다. 도와주세요, 고마워요!