1. p.68 class Function: def __call__(self, input): x = input.data y = self.forward(x) output = Variable(y) self.input = input return output def forward(self, x): raise NotImplementedError 여기서 NotImplementedError을 왜 사용하는 것인지? pass를 사용해도 괜찮지 않은 것인지 궁금합니다. 2. 반복문을 이용하여 backward를 구현하는 것이 왜 재귀를 이용한 방법보다 처리 효율이 좋은지? → 재귀방법은 중간 결과를 메모리에 유지하면서 처리를 이어가기 때문 3. (p.82) class Variable: #생략 def backward(self)..