用 python 实现一个简单的神经网络
1. 前言
让我们先看一个经典的双层神经网络模型,想必大家都很熟悉了。
在这个模型中,有一个输入层、一个输出层和一个隐藏层。但是单纯根据这个模型来看图说话,实现一个神经网络,还是比较困难的。
2. 另一种表示
现在看看这个双层神经网络的另外一种表示方法:

同前面的图相比,有几点区别:
- 除了输入(x)、输出(y_pred)和隐藏层(h 和 h_relu)这几个表征层之外,另外还有两个网络层 w1 和 w2。可以将 w1 看做输入表示到隐藏表示之间的映射,将 w2 看做隐藏表示到输出表示之间的映射。
- 输入向量的维度为 D_in, 输出向量维度为 D_out,隐藏层向量维度为 H。可以批量执行,每批样本量为 N。
- 在隐藏层内部,使用了 relu 激活函数
3. 反向传播
反向传播中,最重要的是求梯度。在矩阵乘这种场景下如何求梯度呢?
如
h_relu * w2 = y_pred
那么,有了 y_pr