본문 바로가기
반응형

딥러닝30

30~32단계) 고차 미분 DeZero는 1차 미분에 한해서 미분을 자동으로 계산할 수 있다. 이번 단계에서는 DeZero가 2차, 3차, 4차 등 고차 미분까지 자동으로 계산할 수 있도록 확장할 것이다. 1. 현재 고차 미분을 할 수 없는 이유 foward계산과 달리 backward계산은 계산 그래프가 그려지지 않는다. 먼저 forward계산은 계산 그래프가 그려지는 것을 이해하기 위해 아래 Function클래스를 보자. class Function: def __call__(self, *inputs): inputs = [as_variable(x) for x in inputs] xs = [x.data for x in inputs] ys = self.forward(*xs) if not isinstance(ys, tuple): ys =.. 2021. 7. 9.
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.
27단계) 테일러 급수 미분 이번에는 DeZero를 사용하여 sin 함수의 미분 문제를 풀어볼 것이다. sin 의 미분은 해석적으로 풀리지만 정공법으로 sin 함수를 DeZero로 구현하고 그 미분을 테일러 급수를 이용해서 계산할 것이다. 1. sin 함수 구현 y = sin(x) 일때 그 미분은 y'=cos(x) 이다. import numpy as np from dezero import Function class Sin(Function): def forward(self, x): y = np.sin(x) return y def backward(self, gy): x = self.inputs[0].data gx = gy * np.cos(x) return gx def sin(x): return Sin()(x) 넘파이가 제공하는 np.s.. 2021. 6. 29.
23~24단계) 패키지로 정리 , 복잡한 함수의 미분 지금까지 단계마다 구성한 코드를 한 파일에 담았다. 이제는 DeZero의 규모가 커졌기 때문에 패키지로 정리할 것이다. 1. 패키지로 정리 파이썬에는 모듈, 패키지, 라이브러리라는 용어를 사용하는데 각각의 의미는 다음과 같다. 모듈 모듈은 파이썬 파일이다. 다른 파이썬 프로그램에서 import하여 사용하는 것을 가정하고 만ㄴ들어진 파이썬 파일을 '모듈'이라 한다. 패키지 패키지느 어러 모듈을 묶은 것이다. 패키지를 만들려면 먼저 디렉터리를 만들고 그 안에 모듈(파이썬 파일)을 추가한다. 라이브러리 라이브러리는 여러 패키지를 묶은 것이다. 하나 이상의 디렉터리로 구성된다. 때로는 패키지를 라이브러리라고 부르기도 한다. 1) 파일 구성 | |ㅡㅡ dezero | |ㅡㅡ __init__.py | |ㅡㅡ cor.. 2021. 6. 29.
728x90
반응형