bp神经网络分类matlab代码_4层bp神经网络详细推导以及代码(矩阵化运算)

本文详细介绍了如何使用matlab实现一个4层BP神经网络,包括模型结构、矩阵化的代码实现,并提供了损失函数的梯度计算过程,涉及tanh激活函数。
摘要由CSDN通过智能技术生成

e6c02a987623cf79f33eca1f28e697ee.png

模型结构:

4层bp模型如下

53125deb611523911283fbdb0756de57.png

1ba7539288d18ea18eb4add10caad60c.png

代码:

使用方法;
python bp_train_use_matrix.py 0.16
# coding: utf-8
import torch
import sys
# 4层神经网络
# x—>h—>m—>y
# y = tanh(tanh(tanh(x@Wx)@Wh)@Wm)
#    h=torch.tanh(x@Wx)
#    m=torch.tanh(h@Wh)
#    y=torch.tanh(m@Wm)

# 模型输入x 
x1 = torch.tensor([[0.1,0.2,0.3]])
x2 = torch.tensor([[0.3,0.2,0.1]])
x = torch.cat([x1,x2],0)
print(x)

# 模型期望输出
y_gt_1=torch.tensor([[1,0]])
y_gt_2=torch.tensor([[0,1]])
y_gt = torch.cat([y_gt_1,y_gt_2],0)
Wx = torch.randn(3,4)
print(Wx.shape)

Wh = torch.randn(4,3)
print(Wh.shape)

Wm = torch.randn(3,2)
print(Wm.shape)


def model(x,Wx,Wh,Wm):
    h=torch.tanh(x@Wx)
    m=torch.tanh(h@Wh)
    y=torch.tanh(m@Wm)
    print("model:y=%s"%(y))
    return h,m,y

def train(x,y_gt,Wx,Wh,Wm,lr):
    h,m,y = model(x,Wx,Wh,Wm)
    # 求误差
    EY=y-y_gt

    # 求 DLoss/DWm
    EYDY=EY*(1-EY**2)
    #DWm=m.t()*EY*(1-EY**2)
    DWm = torch.cat([EYDY,EYDY,EYDY],0)*torch.cat([m.t(),m.t()],1)
    # 求 DLoss/DWh
    EM=EY*(1-EY**2)@Wm.t()
    EMDM = EM*(1-EM**2)
    DWh = torch.cat([EMDM,EMDM,EMDM,EMDM],0)*torch.cat([h.t(),h.t(),h.t()],1)
    # 求 Dloss/DWx
    EH=EM*(1-EM**2)@Wh.t()
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值