我已经开始使用神经网络,并尝试使用 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 的导数足够简单这一事实,但我不确定如何将其考虑到传递到下一节课的输出中。我绝对知道我不能简单地从旧输入中减去导数,但我无法看到它们是如何结合在一起的。