현재 DeZeror에는 문제가 있습니다. 같은 변수를 반복해서 사용할 경우 의도대로 동작하지 않을 수 있다는 문제입니다. y = add(x, x) 계산을 예로 생각해봅시다.
DeZero는 [그림 14-1]처럼 동일한 변수를 사용하여 덧셈을 하면 제대로 미분하지 못합니다. 실제로 어떤 결과가 나오는지 직접 확인해 보겠습니다.
x = Variable(np.array(3.0))
y = add(x, x)
print('y', y.data)
y.backward()
print('x.grad', x.grad)
y 6.0
x.grad 1.0
x = 3.0으로 설정한 후 더 해봤습니다. y의 값은 6.0이라고 재대로 계산했군요. 그러나 x에 대한 미분값(x.grad)을 구하니 1.0이라는 잘못된 결과가 나왔습니다. 제대로 계산한다면 y = x + x일때 y = 2x이니 미분값은 dy/dx = 2 가 됩니다.
댓글 없음:
댓글 쓰기