写一段python代码实现一个简单的linear神经网络
对于这个问题,我们可以使用Python中的NumPy库来实现一个简单的linear神经网络。以下是实现该神经网络的代码:
import numpy as np
# 定义神经网络的输入和输出
X = np.array([[0, 0, 1], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
y = np.array([[0], [1], [1], [0]])
# 定义神经网络的参数
w1 = np.random.rand(3, 4) # 第一层权重
w2 = np.random.rand(4, 1) # 第二层权重
# 定义sigmoid函数用于激活神经元
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义神经网络的前向传播函数
def forward(X, w1, w2):
# 第一层
z1 = np.dot(X, w1)
a1 = sigmoid(z1)
# 第二层
z2 = np.dot(a1, w2)
a2 = sigmoid(z2)
return a2
# 训练神经网络
for i in range(10000):
# 前向传播
a2 = forward(X, w1, w2)
# 计算误差
error = y - a2
# 反向传播
delta2 = error * sigmoid(a2, derivative=True)
delta1 = delta2.dot(w2.T) * sigmoid(a1, derivative=True)
# 更新权重
w2 += a1.T.dot(delta2)
w1 += X.T.dot(delta1)
# 测试神经网络
print(forward(np.array([[0, 0, 1]]), w1, w2)) # 输出0
print(forward(np.array([[0, 1, 1]]), w1, w2)) # 输出1
print(forward(np.array([[1, 1, 1]]), w1, w2)) # 输出0
print(forward(np.array([[1, 0, 1]]), w1, w2)) # 输出1
在这个实现中,我们使用了两层的神经网络,其中第一层有4个神经元,第二层有1个神经元。我们使用sigmoid函数作为激活函数,使用误差反向传播算法来更新权重。在训练完成后,我们对神经网络进行了测试,输出了几个示例输入的结果。
原文地址: https://www.cveoy.top/t/topic/rya 著作权归作者所有。请勿转载和采集!