반응형 딥러닝프레임워크10 28~29단계) 경사하강법 , 뉴턴 방법 , 함수 최적화 미분의 가장 중요한 용도는 함수를 최적화하는 것이다. 이번에는 특정 함수를 대상으로 최적화를 해볼 것이다. 함수 최적화 1. 로젠브록 함수 로젠브록 함수(Rosenbrock function)의 수식과 형태는 아래와 같다. 로젠브록 함수의 정의는 a, b가 정수일 때, 아래의 식과 같고, 위의 이미지는 a=1, b=100일 때에 해당된다. 목표는 로젠브록 함수의 출력이 최소가 되는 x0과 x1을 찾는 것이다. 실제로 로젠브록 함수의 최솟값은 (x0, x1) = (1, 1)이며 이를 DeZero를 사용하여 구해볼 것이다. 2. 미분 계산하기 import numpy as np from dezero import Variable def rosenbrock(x0, x1): y = 100 * (x1 - x0 ** 2.. 2021. 7. 3. 25~26단계) 계산 그래프 시각화 , DOT 이전 포스팅에서 Goldstein-Price라는 함수를 코딩했다. 이와 같은 복잡한 식을 계산할 때, 그 뒤편에서 어떤 계산 그래프가 그려지는 지를 직접 눈으로 확인하기 위해 Graphviz라는 외부 자원을 이용하여 계산 그래프를 시각화할 것이다. 계산 그래프 시각화 (1) 1. DOT 언어로 그래프 작성하기 digraph g{ x y } 반드시 digraph g { ... } 구조여야 하고, 그래프의 정보가 ... 안에 넣는다. 예시로 x와 y를 넣었는데, 2개의 노드를 그린다는 의미이다. 각 노드는 줄바꿈으로 구분한다. 입력 후, smaple.dot 파일로 저장하고 아래 명령을 실행하면 된다. dot sample.dot -T png -o sample.png 2. 노드에 속성 지정하기 digraph g.. 2021. 6. 29. 23~24단계) 패키지로 정리 , 복잡한 함수의 미분 지금까지 단계마다 구성한 코드를 한 파일에 담았다. 이제는 DeZero의 규모가 커졌기 때문에 패키지로 정리할 것이다. 1. 패키지로 정리 파이썬에는 모듈, 패키지, 라이브러리라는 용어를 사용하는데 각각의 의미는 다음과 같다. 모듈 모듈은 파이썬 파일이다. 다른 파이썬 프로그램에서 import하여 사용하는 것을 가정하고 만ㄴ들어진 파이썬 파일을 '모듈'이라 한다. 패키지 패키지느 어러 모듈을 묶은 것이다. 패키지를 만들려면 먼저 디렉터리를 만들고 그 안에 모듈(파이썬 파일)을 추가한다. 라이브러리 라이브러리는 여러 패키지를 묶은 것이다. 하나 이상의 디렉터리로 구성된다. 때로는 패키지를 라이브러리라고 부르기도 한다. 1) 파일 구성 | |ㅡㅡ dezero | |ㅡㅡ __init__.py | |ㅡㅡ cor.. 2021. 6. 29. 17~18단계) 메모리 관리 방식 , 순환 참조 , 메모리 절약 모드 1. 메모리 관리 방식 CPython의 메모리 관리는 두 가지 방식으로 진행된다. 참조(reference) 수를 세는 방식과 세대(generation)를 기준으로 쓸모없어진 객체를 회수하는 방식이다. 앞으로 전자를 참조 카운트로, 후자를 GC(Garbage Collection)라고 부를 것이다. 먼저 참조 카운트 방식을 살펴본 후 GC를 볼 것이다. 1) 참조 카운트 방식 모든 객체는 참조 카운트가 0인 상태로 생성된다. 다른 객체가 참조할 때마다 1씩 증가하고 객체에 대한 참조가 끊길 때마다 1씩 감소하다가 0이 되면 해당 객체는 메모리에서 삭제된다. 예를 들어, 대입 연산자를 사용하거나 함수에 인수로 전달하거나 컨테이너 타입 객체에 추가할 때 참조 카운트가 증가한다. class obj: pass de.. 2021. 6. 19. 이전 1 2 3 다음 728x90 반응형