4.2 链式法则

反向传播将局部导数向反方向传递,传递的原理基于链式法则。反向传播时将信号乘以节点的局部导数然后传递给下一个节点。

图片[1]-4.2 链式法则-大赛人网
图片[2]-4.2 链式法则-大赛人网

4.3 反向传播

利用计算图的反向传播,可以很容易地计算出输出关于输入的偏导数。

4.3.1 加法节点的反向传播

图片[3]-4.2 链式法则-大赛人网

4.3.2 乘法节点的反向传播

图片[4]-4.2 链式法则-大赛人网

4.4 激活层的反向传播和实现

现在将计算图应用到神经网络中。神经网络中一步重要的计算操作就是激活函数,下面就来讨论各种激活函数的反向传播,基于这些我们就可以用代码实现激活层的完整功能了。

4.4.1 ReLU的反向传播

图片[5]-4.2 链式法则-大赛人网
class Relu:
    def __init__(self):
        self.mask = None

    def forward(self, x):
        self.mask = (x <= 0)
        out = x.copy()
        out[self.mask] = 0

        return out

    def backward(self, dout):
        dout[self.mask] = 0
        dx = dout

        return dx

4.4.2 Sigmoid的反向传播

图片[6]-4.2 链式法则-大赛人网
class Sigmoid:
    def __init__(self):
        self.out = None

    def forward(self, x):
        out = sigmoid(x)
        self.out = out
        return out

    def backward(self, dout):
        dx = dout * (1.0 - self.out) * self.out

        return dx
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容