简单神经网络实现 01

来源:互联网 发布:王德民 知乎 编辑:程序博客网 时间:2024/06/06 07:23

实现一个简单的神经网络,三个输入结点,没有隐层,一个输出结点,激活函数选择sigmoid函数。

from numpy import exp, array, random, dotclass 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_dirivative(self, x):        return x * (1 - x)    def train(self, training_set_inputs, training_set_outputs, number_of_training_iterations):        for iteration in range(number_of_training_iterations):            outputs = self.predict(training_set_inputs)            error = training_set_outputs - outputs            adjustment = 0.1 * dot(training_set_inputs.T, error * self.__sigmoid_dirivative(outputs))#梯度下降            self.synaptic_weights += adjustment    def predict(self, inputs):        return self.__sigmoid(dot(inputs, self.synaptic_weights))if __name__ == '__main__':    neural_network = NeuralNetwork()    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, 1000)    print(neural_network.synaptic_weights)    print(neural_network.predict(array([1, 1, 1])))
原创粉丝点击