首页 > 代码库 > torch教程[1]用numpy实现三层全连接神经网络
torch教程[1]用numpy实现三层全连接神经网络
torch的第一个例子程序,是用numpy函数实现神经网络。cs231n的课程中有大量这样的作业。
import numpy as np N,D_in,H,D_out=64,1000,100,10 x=np.random.randn(D_in,H) x=np.random.randn(N,D_in) y=np.random.randn(N,D_out) w1=np.random.randn(D_in,H) w2=np.random.randn(H,D_out) learning_rate=1e-6 for t in range(500): h=x.dot(w1) h_relu=np.maximum(h,0) y_pred=h_relu.dot(w2) #compute and print loss loss=np.square(y_pred-y).sum() print(t,loss) grad_y_pred=2.0*(y_pred-y) grad_w2=h_relu.T.dot(grad_y_pred) grad_h_relu=grad_y_pred.dot(w2.T) grad_h=grad_h_relu.copy() grad_h[h<0]=0 grad_w1=x.T.dot(grad_h) w1-=learning_rate*grad_w1 w2-=learning_rate*grad_w2
这是一个三层的神经网络,包括一个输入层,一个中间隐藏层和一个输出层,神经元数分别为Din, H和Dout
前向传播时,H=XW1, H=max(H,0), Y=HW2
反向传播时,按如下公式计算梯度:
若Y=XB, 则DX=YBT DB=XT DY
若Hrelu=max(H,0) DH=Hrelu if H>0 else DH=0
torch教程[1]用numpy实现三层全连接神经网络
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。