예제 #1
0
    def build_NN(self, sample):
        nn_sample = []
        ##initial the three layer network for every sample
        input_layer = Layer(lambda x: x, self.input_cells)
        hidden_layer = Layer(tanh, self.hidden_cells)
        output_layer = Layer(sigmoid, self.output_cells)

        # build input layer
        input_vec = sample[:3]
        input_layer.set_net_vals_from_vec(input_vec)
        input_layer.active_cells()

        # build hidden layer
        hidden_net_vec = numpy.dot(self.w_ih, input_vec)
        hidden_layer.set_net_vals_from_vec(hidden_net_vec)
        # active hidden layer cells
        hidden_layer.active_cells()
        hid_out_vec = hidden_layer.get_active_val_as_vec()

        # build output layer
        output_vec = numpy.dot(self.w_hj, hid_out_vec)
        output_layer.set_net_vals_from_vec(output_vec)

        # active output layer cells
        output_layer.active_cells()

        type = sample[3]
        base = numpy.zeros(3)
        base[type - 1] = 1
        base = numpy.asarray(base)

        nn_sample.append(input_layer)
        nn_sample.append(hidden_layer)
        nn_sample.append(output_layer)
        nn_sample.append(base)

        return nn_sample