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) 기울기 확인
np.allclose(a, b, rtol=1e-05, atol=1e-08)
|a-b| $\se$ (atol + rtol*|b|)
이 식에서 b값이 커지면 (수치미분값이 커지면) 왜 |미분값 - 수치미분값|의 허용범위가 커지는지?
반응형
'[딥러닝] > [밑바닥부터 시작하는 딥러닝]' 카테고리의 다른 글
밑바닥부터 시작하는 딥러닝 3 - ch1 (0) | 2021.06.30 |
---|---|
밑바닥부터 시작하는 딥러닝 1 - 4 신경망에서의 기울기 (0) | 2021.06.28 |
밑바닥부터 시작하는 딥러닝 1 - 4 경사 하강법 (0) | 2021.06.27 |
밑바닥부터 시작하는 딥러닝 1 - 4 신경망 학습 (0) | 2021.06.26 |
밑바닥부터 시작하는 딥러닝 1 - 3 손글씨 숫자 인식 예제 (0) | 2021.06.26 |