【问题标题】:Backpropagtion with ReLU - Understanding the calculation使用 ReLU 进行反向传播 - 理解计算
【发布时间】:2019-10-28 13:38:04
【问题描述】:

我已经开始使用神经网络,并且正在尝试使用 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

我的问题很简单:backward 方法的输出应该是怎样的?我的困惑源于 ReLU 的导数足够简单这一事实,但我不确定如何将其考虑到传递到下一节课的输出中。我绝对知道我不能简单地从旧输入中减去导数,但我无法看到它们是如何结合在一起的。

【问题讨论】:

    标签: neural-network deep-learning backpropagation relu


    【解决方案1】:

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

    因此,根据输出的内容,您必须将 error_tensor 乘以 1 或 0。

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

    【讨论】:

      猜你喜欢
      • 2019-03-18
      • 1970-01-01
      • 2015-12-09
      • 2017-06-21
      • 2011-12-27
      • 2021-07-14
      • 2021-12-10
      • 2016-06-28
      • 2012-03-14
      相关资源
      最近更新 更多