用NumPy实现两层神经网络
一个全连接ReLU神经网络,一个隐藏层,没有bias。用来从x预测y,使用Square Loss。
这一实现完全使用NumPy来计算前向神经网络,loss,和反向传播算法。
N—样本数据的大小 DinD_{in}Din—输入层向量大小 H—隐藏层向量大小 DoutD_{out}Dout—输出层向量大小
- forward pass
-
h=xw1h = xw_1h=xw1 x=>N∗Din w1=>Din∗H h=>N∗H\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ x => N * D_{in}\ \ \ \ \ \ \ w_1 => D_{in} * H\ \ \ \ \ \ \ h => N * H x=>N∗Din w1=>Din∗H h=>N∗H
-
hrelu=max(0,h) hrelu=>N∗Hh_{relu} = max(0,h)\ \ \ \ \ \ \ \ h_{relu}=>N*Hhrelu=max(0,h) hrelu=>N∗H
-
y^=hreluw2 w2=>H∗Dout y^=>N∗Dout\hat{y} = h_{relu}w_2\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ w_2 => H * D_{out}\ \ \ \ \ \ \ \hat{y} => N * D_{out}y^=hreluw2 w2=>H∗Dout y^=>N∗
-

这篇博客介绍了如何从使用NumPy实现的两层神经网络过渡到使用PyTorch的Tensor和autograd功能。通过比较NumPy的前向传播和反向传播过程与PyTorch的自动求导机制,阐述了PyTorch在神经网络构建和训练中的优势。进一步,文章提到了PyTorch的nn模块和optim包,展示了如何利用它们简化模型构建和参数更新。最后,讨论了如何自定义nn.Module来构建更复杂的网络结构。
最低0.47元/天 解锁文章
8万+

被折叠的 条评论
为什么被折叠?



