반응형

<참조: https://tensorflow.blog>

케라스 작업 흐름과 모델 정의

글. 오상문 sualchi@daum.net

 

 

다음은 일반적인 케라스 작업 흐름입니다.

  1. 입력 텐서와 목적 텐서에 맞는 훈련 데이터 정의
  2. 입력과 목적을 이어주는 여러 층으로 이루어진 네트워크(모델) 정의
  3. 학습 과정을 위한 손실(Loss) 함수, 옵티마이저, 모니터링 측정 지표 설정
  4. 모델 fit() 메서드를 훈련 데이터에 대해 반복 호출

 

모델 정의 단계

 

모델 정의 방법은 다음처럼 두 가지로 나눌 수 있습니다. 일단 이렇게 모델 구조를 정의하면 후반 작업은 다르지 않습니다. 

 

- Sequential 클래스(계층 구조 네트워크) 방식

- 함수 API(임의 구조의 비순환 유향 그래프) 방식

 

1) Sequential 클래스 방식 예

 

Sequential 클래스를 사용하여 정의한 2개의 층으로 된 모델 정의 예입니다.

 

from keras import models
from keras import
layers

model = models.Sequential()
model.add(layers.Dense(
32, activation='relu', input_shape=(784
,))) # 입력 데이터 크기 지정
model.add(layers.Dense(
10, activation='softmax'))

 

2) 함수 API 방식 예

 

앞에서 사용한 모델 정의 예제를 함수형 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)

 

컴파일 단계

 

이 단계에서 학습 과정을 설정합니다. 모델 옵티마이저와 손실 함수, 훈련 모니터링용 측정 지표를 설정합니다. 다음은 하나의 손실 함수를 사용한 예입니다.

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

 

학습 단계

 

끝으로, 입력 데이터의 넘파이 배열과 목적 데이터를 fit() 메서드에 전달, 호출하여 학습합니다.

 

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

 

<이상>

 

반응형

+ Recent posts