neuron_b = Neuron(eta, input_size, unit_step_b) neuron_b.train(training_data, training_times) neuron_c = Neuron(eta, input_size, unit_step_c) neuron_c.train(training_data, training_times) neurons = [neuron_a, neuron_b, neuron_c] new_training_data = [] for x, label in training_data: print("=") unities = [] for neuron in neurons: result = dot(x, neuron.weights) unit = neuron.get_unit_step(x) unities.append(unit) print("{}: {} -> {}".format(x, result, unit)) new_training_data.append((array(unities), label)) neuron_d = Neuron(eta, input_size, unit_step_d) neuron_d.train(new_training_data, training_times) for x, label in new_training_data: print("\n#####") unit = neuron_d.get_unit_step(x) unit = int(unit) print("expected: {}, error: {}".format(neuron_d.expected, neuron_d.error)) print("{}: -> {}".format(x, unit))
#!/usr/bin/env python # -*- coding: utf-8 -*- from numpy import array, dot from neuron import Neuron unit_step = lambda inputs, weights: 0 if dot(inputs, weights) < 0 else 1 training_data = [ (array([0, 0, 1]), 0), (array([0, 1, 1]), 1), (array([1, 0, 1]), 0), (array([1, 1, 1]), 1), ] eta = 0.2 input_size = 3 training_times = 100 neuron = Neuron(eta, input_size, unit_step) neuron.train(training_data, training_times) for x, _ in training_data: unit = neuron.get_unit_step(x) print("{}: -> {}".format(x, unit))