<참조: https://tensorflow.blog>
케라스 작업 흐름과 모델 정의
글. 오상문 sualchi@daum.net
다음은 일반적인 케라스 작업 흐름입니다.
- 입력 텐서와 목적 텐서에 맞는 훈련 데이터 정의
- 입력과 목적을 이어주는 여러 층으로 이루어진 네트워크(모델) 정의
- 학습 과정을 위한 손실(Loss) 함수, 옵티마이저, 모니터링 측정 지표 설정
- 모델
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)
<이상>
'AI 머신러닝' 카테고리의 다른 글
파이썬, 단순 선형 회귀 예제(텐서플로우2) (0) | 2020.01.04 |
---|---|
케라스, IMDB 데이터셋 가져와서 신경망 데이터 준비하기 (0) | 2020.01.04 |
딥러닝 플랫폼, 텐서풀로우, CNTK, 티아노(씨아노) (0) | 2020.01.03 |
딥러닝과 신경망 모델 (0) | 2020.01.03 |
기존 프로그래밍과 기계학습의 차이점 (0) | 2020.01.03 |