이전 장에서 우리는 Variable 클래스의 backward 메서드를 다음처럼 구현했습니다.
class Variable:
def __init__(self, data):
self.data = data
self.grad = None
self.creator = None
def set_creator(self, func):
self.creator = func
def backward(self):
f = self.creator
if f is not None:
x = f.input
x.grad = f.backward(self.grad)
x.backward()
이 backward메서드에서 눈에 밟히는 부분은 (입력 방향으로) 하나 앞 변수의 backward메서드를 호출하는 코드입니다. "backward 메서드에서 backward메서드를 호출하고, 호출된 backward 메서드에서 또 다른 backward 메서드를 호출하고,...' 과정이 계속됩니다(창조자 함수가 없는 변수, 즉 self.creator 가 None인 변수를 찾을 때까지 계속됩니다) 이를 재귀 구조라고 합니다.
댓글 없음:
댓글 쓰기