基于神经网络实现异或运算
时间: 2024-02-05 10:04:08 浏览: 18
以下是基于神经网络实现异或运算的Python代码:
```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)
# 初始化权重
syn0 = 2 * np.random.random((2, 3)) - 1
syn1 = 2 * np.random.random((3, 1)) - 1
# 训练模型
for j in range(60000):
# 前向传播
layer0 = X
layer1 = sigmoid(np.dot(layer0, syn0))
layer2 = sigmoid(np.dot(layer1, syn1))
# 计算误差
layer2_error = y - layer2
if (j % 10000) == 0:
print("Error:" + str(np.mean(np.abs(layer2_error))))
# 反向传播
layer2_delta = layer2_error * sigmoid_derivative(layer2)
layer1_error = layer2_delta.dot(syn1.T)
layer1_delta = layer1_error * sigmoid_derivative(layer1)
# 更新权重
syn1 += layer1.T.dot(layer2_delta)
syn0 += layer0.T.dot(layer1_delta)
# 输出结果
print("Output after training")
print(layer2)
```