페이지

2022년 8월 20일 토요일

17.5 동작 확인

 순환 참조가 없어진 새로운 DeZero에서 다음 코드를 실행해보죠.

for i in range(10)
  x = Variable(np.random.randn(10000))    # 거대한 데이터
  y = square(square(square(x)))           # 복잡한 계싼을 수행한다

for 문을 사용하여 계산을 반복해 수행했습니다. 이 반복문은 [그림 17-4]와 같이 복잡한 참조 구조를 만들어냅니다.



그리고 for 문이 두 번째 반복될 때 x와 y가 덮어 써집니다. 그러면 사용자는 이전의 계산 그래프를 더 이상 참조하지 않게 되죠. 참조 카운트가 0이 되므로 이 시점에 계산 그래프에 사용된 메모리가 바로 삭제됩니다. 이것으로 DeZero 순환 참조 문제가 해소되었습니다.


파이썬으로 메모리 사용량을 측정하려면 외부 라이브러리인 memory porfiler등을 사용하면 편리합니다. 방금 전의 코드를 실제로 측정해 보면 메모리 사용량이 전혀 증가하지 않았음을 확인할 수 있을 겁니다.

댓글 없음: