神经网络前向传播和反向传播(四层神经网络,2层隐藏层)

#前向传播
import numpy as np
def sigmoid(g,deriy=False):#deriy相当于一个开关,
    if deriy==True:
        g=g*(1-g)
        return g
    else:
        a=1/(1+np.exp(-g))
        return a
def fp(x,theta1,theta2,theta3):
    a1=x
    z2=a1.dot(theta1)
    a2=sigmoid(z2)
    z3=a2.dot(theta2)
    a3=sigmoid(z3)
    z4=a3.dot(theta3)
    a4=sigmoid(z4)
    h=a4
    return a2,a3,h
#反向传播 return delta_theta=>dt,1.求各层S ,2.求dt
def bp(x,h,y,a2,a3,theta2,theta3):
    #Slast=h-y
    s4=h-y
    #Sl=Sl+1.dot((thetal).T)*d(al)
    s3=s4.dot(theta3.T)*sigmoid(a3,deriy=True)
    s2=s3.dot(theta2.T)*sigmoid(a2,deriy=True)
    #delta_theta=(al).T.dot(Sl+1)
    dt3=a3.T.dot(s4)
    dt2=a2.T.dot(s3)
    dt1=x.T.dot(s2)
    return dt1,dt2,dt3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值