博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
torch教程[1]用numpy实现三层全连接神经网络
阅读量:5239 次
发布时间:2019-06-14

本文共 872 字,大约阅读时间需要 2 分钟。

torch的第一个例子程序,是用numpy函数实现神经网络。cs231n的课程中有大量这样的作业。

import numpy as npN,D_in,H,D_out=64,1000,100,10x=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-6for 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

 

转载于:https://www.cnblogs.com/learning-c/p/6984482.html

你可能感兴趣的文章