三层BP神经网络实现异或问题
时间: 2023-11-20 11:05:16 浏览: 57
以下是一个三层BP神经网络实现异或问题的例子:
```python
import numpy as np
# 定义sigmoid函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义sigmoid函数的导数
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)
# 初始化权重
w1 = np.random.randn(2, 4)
w2 = np.random.randn(4, 1)
# 设置学习率
learning_rate = 0.1
# 迭代训练
for i in range(100000):
# 前向传播
layer1 = sigmoid(np.dot(X, w1))
layer2 = sigmoid(np.dot(layer1, w2))
# 计算误差
error = y - layer2
# 反向传播
layer2_delta = error * sigmoid_derivative(layer2)
layer1_error = layer2_delta.dot(w2.T)
layer1_delta = layer1_error * sigmoid_derivative(layer1)
# 更新权重
w2 += layer1.T.dot(layer2_delta) * learning_rate
w1 += X.T.dot(layer1_delta) * learning_rate
# 输出训练结果
print(layer2)
```