单层前馈神经网络from numpy import * class NeuralNetwork(): def __init__(self): random.seed(1) self.synaptic_weights = 2 * random.random((3,1)) - 1 def __sigmoid(self, x): return 1/(1 + exp(-x)) def __sigmoid_derivate(self, x): return x * (1-x) def train(self, training_set_inputs, training_set_outputs, number_of_training_iterations): for interaion in range(number_of_training_iterations): output = self.predict(training_set_inputs) error = training_set_outputs - output adjustment = dot(training_set_inputs.T, error * self.__sigmoid_derivate(output)) self.synaptic_weights += adjustment def predict(self, inputs): return self.__sigmoid(dot(inputs, self.synaptic_weights)) def think(self, inputs): return self.__sigmoid(dot(inputs, self.synaptic_weights)) neural_network = NeuralNetwork() print('Random starting synaptic weights:') print(neural_network.synaptic_weights) training_set_inputs = array([[0,0,1],[1,1,1],[1,0,1],[0,1,1]]) training_set_outputs = array([[0,1,1,0]]).T neural_network.train(training_set_inputs,training_set_outputs,10000) print('New Synaptic weights after training: ') print(neural_network.synaptic_weights) print('Considering new situation [1 0 0]->?:') print(neural_network.think(array([1, 0, 0])))
查看原文:http://data.1kapp.com/?p=284
仅用Numpy写的感知机(单层前馈神经网络)
最新推荐文章于 2022-05-26 20:03:43 发布