ReLU的反向传播-了解计算

时间:2019-10-28 13:38:04

标签: neural-network deep-learning backpropagation relu

我已经开始使用神经网络,并尝试使用ReLU激活功能实现正向和反向传递。但是,对于倒退,我觉得我误会了一些相对基本的东西。

import numpy as np

class ReLU:
    def __init__(self):
        self.input_tensor = None

    def forward(self, input_tensor):
        self.input_tensor = input_tensor
        return np.maximum(0, input_tensor)

    def backward(self, error_tensor):
        deriv = np.greater(error_tensor, 0).astype(int)

        return self.input_tensor - deriv

我的问题很简单:后向方法的输出应该怎么看?我的困惑源于ReLU的派生词很简单的事实,但是我不确定然后如何将其计入传递到下一堂课的输出中。我绝对意识到,我不能简单地从旧输入中减去导数,但是我看不到它们是如何结合在一起的。

1 个答案:

答案 0 :(得分:0)

对于x> 0,relu就像将x乘以1。否则,就像将x乘以0。然后导数是1(x> 0)或0(x <= 0)。

因此,根据输出的不同,必须将error_tensor乘以1或0。

如果不清楚,则意味着您必须保存前向通过的输出以帮助计算梯度。