下面是使用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]]

可以看到,使用多层神经网络成功解决了异或运算问题

使用python实现利用多层神经网络解决异或运算问题

原文地址: https://www.cveoy.top/t/topic/erpL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录