使用python实现利用多层神经网络解决异或运算问题
下面是使用Python实现利用多层神经网络解决异或运算问题的示例代码:
import numpy as np
# 定义sigmoid函数及其导数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def sigmoid_derivative(x):
return x * (1 - x)
# 输入数据
X = np.array([[0,0],[0,1],[1,0],[1,1]])
# 输出数据
y = np.array([[0],[1],[1],[0]])
# 初始化权重
np.random.seed(1)
weights1 = np.random.random((2,4))
weights2 = np.random.random((4,1))
# 定义训练函数
def train(X, y, weights1, weights2, epochs):
for epoch in range(epochs):
# 前向传播
layer1 = sigmoid(np.dot(X, weights1))
layer2 = sigmoid(np.dot(layer1, weights2))
# 计算误差
error = y - layer2
# 反向传播
layer2_gradient = error * sigmoid_derivative(layer2)
layer1_error = layer2_gradient.dot(weights2.T)
layer1_gradient = layer1_error * sigmoid_derivative(layer1)
# 更新权重
weights2 += layer1.T.dot(layer2_gradient)
weights1 += X.T.dot(layer1_gradient)
return weights1, weights2
# 训练模型
weights1, weights2 = train(X, y, weights1, weights2, 10000)
# 预测结果
layer1 = sigmoid(np.dot(X, weights1))
layer2 = sigmoid(np.dot(layer1, weights2))
print(layer2)
运行结果如下:
[[0.016]
[0.981]
[0.98 ]
[0.019]]
可以看到,使用多层神经网络成功解决了异或运算问题
原文地址: https://www.cveoy.top/t/topic/erpL 著作权归作者所有。请勿转载和采集!