Exemple #1
0
    def predict(self, input_array):
        inputs = Matrix.fromArray(input_array)
        hidden = Matrix.algebra_multiply(self.weights_inputs_hidden, inputs)

        hidden.add(self.bias_hidden)
        hidden.map(sigmoid)

        output = Matrix.algebra_multiply(self.weights_hidden_outputs, hidden)
        output.add(self.bias_output)
        output.map(sigmoid)

        return output.toArray()
Exemple #2
0
    def train(self, inputs_array, targets):
        inputs = Matrix.fromArray(inputs_array)
        hidden = Matrix.algebra_multiply(self.weights_inputs_hidden, inputs)
        hidden.add(self.bias_hidden)

        hidden.map(sigmoid)

        outputs = Matrix.algebra_multiply(self.weights_hidden_outputs, hidden)
        outputs.add(self.bias_output)
        outputs.map(sigmoid)

        target = Matrix.fromArray(targets)

        output_errors = Matrix.sub(target, outputs)

        gradients = Matrix.staticMap(outputs, dsigmoid)
        gradients.multiply(output_errors)
        gradients.multiply(self.learning_rate)

        hidden_t = Matrix.transpose(hidden)
        weight_hidden_out_deltas = Matrix.algebra_multiply(gradients, hidden_t)

        self.weights_hidden_outputs.add(weight_hidden_out_deltas)
        self.bias_output.add(gradients)

        who_t = Matrix.transpose(self.weights_hidden_outputs)
        hidden_errors = Matrix.algebra_multiply(who_t, output_errors)

        hidden_gradient = Matrix.staticMap(hidden, dsigmoid)
        hidden_gradient.multiply(hidden_errors)
        hidden_gradient.multiply(self.learning_rate)

        inputs_t = Matrix.transpose(inputs)
        weight_ih_deltas = Matrix.algebra_multiply(hidden_gradient, inputs_t)

        self.weights_inputs_hidden.add(weight_ih_deltas)
        self.bias_hidden.add(hidden_gradient)