上一张我们实现了梯度下降算法,并且能训练出一个简单的神经网络了;本章会基于图计算的方式去实现神经网络。


P.S.:利用计算图的求导数的步骤类似于链式法则, 这里先挖个坑,稍后求sigmoid的微分的时候会举例。
5.1简单层的实现
Ps: 在前面的几章中,我对代码的重视程度并不大,这是因为前几章的涉及的代码都是作为理论基础。在后面的章节中会注意代码的组织结构。
在实现方面会尽量使用python的类。
为此,创建一个所有类的基类:BaseLayer
forward() 是推理过程中需要调用的函数;其内部的实现是基于公式本身。
backward() 是反向传播过程中需要调用的函数;其内部的实现是基于导数实现的。
以下是BaseLayer的具体实现方式。
- 1 class BaseLayer:
- 2 '''
- 3 所有层的基类
- 4 '''
- 5 def forward(self,x,y):
- 6 raise NotImplementedError
- 7 def backward(self,dout):
- 8