public MPL_Layer(int inps_number, int inp_w, int inp_h, int neurons_number, int next_layer_neurons_number) { this.input_w = inp_w; this.input_h = inp_h; //total number of previous layer's neurons this.full_inputs_number = inps_number * inp_w * inp_h; //full-connected layer this.full_input = new float[full_inputs_number]; this.inputs = new List <float[, ]>(); this.packed_errors_for_prev_subs = new List <float[, ]>(); for (int i = 0; i < inps_number; i++) { packed_errors_for_prev_subs.Add(new float[inp_w, inp_h]); } this.outputs_number = neurons_number; // this.bj_prev = prev_subsampling.bj; this.next_layer_outputs_number = next_layer_neurons_number; this.output = new float[outputs_number]; this.non_activated_stages = new float[outputs_number]; this.errors = new float[outputs_number]; this.weights = new float[full_inputs_number, outputs_number]; // MatrixOperations.init_matrix_random(weights, full_inputs_number, outputs_number); }
public OutPutLayer(MPL_Layer mpl, int outp_number) { this.input = mpl.output; this.inputs_number = mpl.outputs_number; this.outputs_number = outp_number; this.weights = new float[inputs_number, outputs_number]; MatrixOperations.init_matrix_random(weights, inputs_number, outputs_number); non_activated_stages = new float[outputs_number]; error = new float[outputs_number]; output = new float[outputs_number]; }
public MPL_Layer(MPL_Layer prev_mpl, int neurons_number, int next_layer_neurons_number) { //total number of previous layer's neurons this.full_inputs_number = prev_mpl.outputs_number; //full-connected layer this.full_input = prev_mpl.output; this.outputs_number = neurons_number; // this.bj_prev = prev_subsampling.bj; this.next_layer_outputs_number = next_layer_neurons_number; this.output = new float[outputs_number]; this.non_activated_stages = new float[outputs_number]; this.errors = new float[outputs_number]; this.weights = new float[full_inputs_number, outputs_number]; // MatrixOperations.init_matrix_random(weights, full_inputs_number, outputs_number); }