public double RunEpoch(double[][] input) { double error = 0.0; double[][] data = new double[input.Length][]; for (int i = 0; i < data.Length; i++) { data[i] = (double[])input[i].Clone(); } for (int i = 0; i < rbm_learnings.Length; i++) { Console.WriteLine(i); RBMLayer rbm = dbn.Layers[i]; rbm_learnings[i] = new RBMLearning(rbm); for (int j = 0; j < epoch; j++) { rbm_learnings[i].RunEpoch(data); } for (int j = 0; j < input.Length; j++) { data[j] = rbm.ComputeDown(data[j]); } } return(error); }
public RBMLearning(RBMLayer rbm) { this.rbm = rbm; Q = new double[rbm.InputsCount]; P = new double[rbm.NeuronsCount]; random = new Random((int)DateTime.Now.Ticks); }
public DBNNetwork(IActivationFunction function, int inputsCount, params int[] neuronsCount) : base(inputsCount, neuronsCount.Length) { for (int i = 0; i < LayersCount; i++) { layers[i] = new RBMLayer( neuronsCount[i], (i == 0) ? inputsCount : neuronsCount[i - 1], function); } }