private static RestrictedBoltzmannMachine createNetwork(double[][] inputs)
{
RestrictedBoltzmannMachine network = new RestrictedBoltzmannMachine(6, 2);
network.Hidden.Neurons[0].Weights[0] = 0.00461421;
network.Hidden.Neurons[0].Weights[1] = 0.04337112;
network.Hidden.Neurons[0].Weights[2] = -0.10839599;
network.Hidden.Neurons[0].Weights[3] = -0.06234004;
network.Hidden.Neurons[0].Weights[4] = -0.03017057;
network.Hidden.Neurons[0].Weights[5] = 0.09520391;
network.Hidden.Neurons[0].Threshold = 0;
network.Hidden.Neurons[1].Weights[0] = 0.08263872;
network.Hidden.Neurons[1].Weights[1] = -0.118437;
network.Hidden.Neurons[1].Weights[2] = -0.21710971;
network.Hidden.Neurons[1].Weights[3] = 0.02332903;
network.Hidden.Neurons[1].Weights[4] = 0.00953116;
network.Hidden.Neurons[1].Weights[5] = 0.09870652;
network.Hidden.Neurons[1].Threshold = 0;
network.Visible.Neurons[0].Threshold = 0;
network.Visible.Neurons[1].Threshold = 0;
network.Visible.Neurons[2].Threshold = 0;
network.Visible.Neurons[3].Threshold = 0;
network.Visible.Neurons[4].Threshold = 0;
network.Visible.Neurons[5].Threshold = 0;
network.Visible.CopyReversedWeightsFrom(network.Hidden);
ContrastiveDivergenceLearning target = new ContrastiveDivergenceLearning(network);
int iterations = 5000;
double[] errors = new double[iterations];
for (int i = 0; i < iterations; i++)
errors[i] = target.RunEpoch(inputs);
return network;
}