[딥러닝]/[밑바닥부터 시작하는 딥러닝]

밑바닥부터 시작하는 딥러닝 3 - 1-2에 대한 질문

딥러닝 도전기 2021. 7. 4. 17:47

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):
    	funcs = [self.creator]
        while funcs:
        f = funcs.pop()
        x, y = f.input, f.output
        x.grad = f.backward(y.grad)
        
        if x.creator is not None:
        	funcs.append(x.creator)

while funcs: 가 어떻게 조건문이 되는지?

 

4. (10단계)

직접 프레임워크를 구현 할 것도 아닌데 test방법을 알려주는 이유?

(어디에 쓰이는지)

 

5.(p.97) 기울기 확인

[그림 1]
[그림2] : [그림1]에 비해서 b값이 커진 상태 

np.allclose(a, b, rtol=1e-05, atol=1e-08)

 

|a-b| $\se$ (atol + rtol*|b|)

이 식에서 b값이 커지면 (수치미분값이 커지면) 왜 |미분값 - 수치미분값|의 허용범위가 커지는지?

 

 

반응형