#前向传播 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
神经网络前向传播和反向传播(四层神经网络,2层隐藏层)
最新推荐文章于 2024-08-29 00:16:46 发布