Я начал работать с нейронными сетями и пытаюсь реализовать прямой и обратный проход с помощью функции активации 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 достаточно проста, но я не уверен, как это затем учитывается в выводе, который передается на следующую лекцию. Я абсолютно осознаю, что я не могу просто вычесть производные из старого ввода, но я не могу видеть, как они идут вместе.