티스토리 뷰

반응형

0. 들어가면서

 우선 신경망에 대한 기초도 모른다면 아래의 블러그를 참고하고 다시오자.

han-py.tistory.com/195

 

케라스의 전형적인 작업 흐름은 다음과 같다.

  1. 입력 텐서와 타깃 텐서로 이루어진 훈련 데이터를 정의하자.
  2. 입력과 타깃을 매핑하는 층으로 이루어진 모델(네트워크)를 정의하자.
  3. 손실 함수, 옵티마이저, 모니터링하기 위한 측정 지표를 선택하고 학습하자.
  4. 훈련 데이터에 대해 모델의 fit() 메서드를 반복적으로 호출하자.

 

 

1. 모델 정의방법

모델을 정의하는 방법은 두 가지로 Sequential 클래스와 함수형 API를 사용한다.

Sequential 클래서 : 구조인 층을 순서대로 쌓아 올린 네트워크로 가장 자주 사용한다.

함수형 API : 비순환 유향 그래프로 완전하게 임의의 구조를 만들 수 있다.

 

우리는 간단히 모델이 구현되는 큰 흐름만 볼 예정이므로 Sequential 클래스를 사용하여 모델을 만들자.

from keras import models
from keras import laters

model = models.Sequential()
model.add(layers.Dense(32, activation='relu', input_shape=(784,)))
model.add(layers.Dense(10, activation='softmax'))

 

같은 모델을 함수형 API를 사용하면 아래와 같다.

input_tensor = layers.Input(shape=(784,))
x = layers.Dense(32, activation='relu')(input_tensor)
output_tensor = layers.Dense(10, activation='softmax')(x)

model = models.Model(inputs=input_tensor, outputs=output_tensor)

함수형 API를 사용하면 모델이 처리할 데이터 텐서를 만들고 마치 함수처럼 이 텐서에 층을 적용한다.

 

주의할 점은 모델 구조가 정의된 후에는 Sequential 모델을 사용했는지와 함수형 API를 사용했는지는 상관이 없어진다. 즉, 그 이후 단계는 동일하다.

 

 

2. 학습 과정 설정

 학습 과정은 컴파일 단계에서 진행된다. 여기서는 모델이 사용할 옵티마이저와 손실함수, 훈련을 모니터링하는데 픽요한 측정 지표를 지정해 준다.

from keras import optimizers

model.compile(optimizer=optimizers.RMSprop(lr=0.001),
                        loss='mse',
                        metrics=['accuracy'])

 위의 예가 손실 함수를 사용하는 가장 흔한 경우의 예라고 볼 수 있다.

 

 

 

3. 학습

 마지막으로 입력 데이터의 넘파이 배열을 모델의 fit()매서드에 전달하면서 학습 과정이 이루어진다.

model.fit(input_tensor, target_tensor, batch_size=128, epochs=10)

 

 

여기까지 코드는 이해가 되지 않더라도 큰 틀을 이해 할 수 있을 것이다. 구글링을 해보면 사실 sequential 모델과 함수형 API의 차이를 몰라 헷갈리는 경우가 많다. 이 둘의 차이만이라도 꼭 이해하면 된다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함