public void CreateActivationNetworkTest()
{
double[][] inputs =
{
new double[] { 1,1,1,0,0,0 },
new double[] { 1,0,1,0,0,0 },
new double[] { 1,1,1,0,0,0 },
new double[] { 0,0,1,1,1,0 },
new double[] { 0,0,1,1,0,0 },
new double[] { 0,0,1,1,1,0 }
};
double[][] outputs =
{
new double[] { 0 },
new double[] { 0 },
new double[] { 0 },
new double[] { 1 },
new double[] { 1 },
new double[] { 1 },
};
RestrictedBoltzmannMachine network = createNetwork(inputs);
ActivationNetwork ann = network.ToActivationNetwork(new SigmoidFunction(1), outputs: 1);
ParallelResilientBackpropagationLearning teacher = new ParallelResilientBackpropagationLearning(ann);
for (int i = 0; i < 100; i++)
{
teacher.RunEpoch(inputs, outputs);
}
double[] actual = new double[outputs.Length];
for (int i = 0; i < inputs.Length; i++)
actual[i] = ann.Compute(inputs[i])[0];
Assert.AreEqual(0, actual[0], 1e-10);
Assert.AreEqual(0, actual[1], 1e-10);
Assert.AreEqual(0, actual[2], 1e-10);
Assert.AreEqual(1, actual[3], 1e-10);
Assert.AreEqual(1, actual[4], 1e-10);
Assert.AreEqual(1, actual[5], 1e-10);
}