手写简单的BP(反向传播)算法(一个隐藏层),网络结构如下:

输入层shape:(1,2)
w1.shape:(2,4)
w2.shape:(4,4)
具体代码实现及数据预测结果:
import numpy as np
import matplotlib.pyplot as plt
# 训练集特征2维
X = np.array([[2,1],[-1,1],[-1,-1],[1,-1]])
# 类别标签
y = np.array([1,2,3,4])
# 初始化权重矩阵
np.random.seed(42)
w1 = np.random.randn(2,4)
w2 = np.random.randn(4,4)
print(w1)
# 学习率(先不加正则化处理)
γ= 0.01
# 损失函数使用均方误差 E=1/2*(y-yhat)**2(单个样本)
# 对output进入端梯度E(w2*net_output)求导(使用标准BP算法)
# 对w2求梯度
def grad2_func(y,yhat,net_output):
res = []
for j in range(len(y)):
res.append((y[j]-yhat[j])*(-net_output)

本文展示了如何手动实现一个包含一个隐藏层的BP(反向传播)算法神经网络,包括网络结构、权重初始化、激活函数、前向传播、反向传播和预测函数。代码中使用了numpy进行计算,并通过sigmoid激活函数和均方误差损失函数。训练集为二维特征数据,经过训练后,网络可以进行预测。
最低0.47元/天 解锁文章
1173

被折叠的 条评论
为什么被折叠?



