您的位置:首页 > 理论基础 > 计算机网络

简单神经网络实现 01

2017-10-12 10:15 411 查看
实现一个简单的神经网络,三个输入结点,没有隐层,一个输出结点,激活函数选择sigmoid函数。

from numpy import exp, array, random, dot

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_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])))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: