Пример #1
0
        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);
        }
Пример #2
0
 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];
 }
Пример #3
0
 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);
 }
Пример #4
0
        public string Recognize(List <float[, ]> inputs)
        {
            string result = "";

            connect_inputs(inputs);
            //    connect_input(input);
            send_signal_front();
            for (int i = 0; i < result_vector_lenght; i++)
            {
                result += Math.Round(output.output[i], 1).ToString() + " | ";
            }

            /*   MatrixOperations.print_vector("mpl hidden input: ", mpl.full_input, mpl.full_inputs_number);
             * MatrixOperations.print_vector("mpl hidden output: ", mpl.output, mpl.outputs_number);
             * MatrixOperations.print_vector("outp_layer input: ", output.input, mpl.outputs_number);
             */
            MatrixOperations.print_vector("outp_layer output: ", output.output, result_vector_lenght);


            return(result);
        }