페이지

2022년 8월 12일 금요일

8.1 현재의 Variable 클래스

 이전 장에서 우리는 Variable 클래스의 backward 메서드를 다음처럼 구현했습니다.


class Variable:
  def __init__(selfdata):
    self.data = data
    self.grad = None
    self.creator = None

  def set_creator(selffunc):
    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인 변수를 찾을 때까지 계속됩니다) 이를 재귀 구조라고 합니다.



댓글 없음: