手写简单的BP(反向传播)算法,实现预测

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

手写简单的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)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值