- Keras 소개
- [시작하기] Sequential 모델 가이드
- [시작하기] 함수형 API 가이드
- [시작하기] FAQ
- [모델] Keras의 모델
- [모델] 함수형 API
- [모델] Sequential
- [계층] Keras의 계층
- [계층] Core 계층
- [계층] 합성곱 계층
- [계층] 풀링 계층
- [계층] 부분적으로 연결된 계층
- [계층] 재발 계층
- [계층] 임베딩 계층
- [계층] Merge 계층
- [계층] 고급 활성화 계층
- [계층] 표준화 계층
- [계층] 노이즈 계층
- [계층] 계층 Wrappers
- [계층] 자신만의 Keras 계층 만들기
- [전처리] 시퀀스 전처리
- [전처리] 텍스트 전처리
- [전처리] 이미지 전처리
- Metrics
- 손실
- 최적화기
- 활성화
- Callbacks
- 데이터셋
- 애플리케이션
- 백엔드 1
- 백엔드 2
- 백엔드 3
- 백엔드 4
- 백엔드 5
- 초기화기
- 정규화기
- 제한
- 시각화
- Scikit-Learn API
- 유용한 도구
모델 클래스 API
함수형 API에서는 입력 텐서와 출력 텐서가 주어진다면 다음과 같이 Model
을 인스턴스화할 수 있습니다:
from keras.models import Model
from keras.layers import Input, Dense
a = Input(shape=(32,))
b = Dense(32)(a)
model = Model(inputs=a, outputs=b)
이 모델은 주어진 a
에 대해서 b
의 계산에 필요한 모든 계층을 포함하고 있습니다.
복수의 입력 혹은 복수의 출력 모델인 경우에도 다음과 같이 리스트를 쓸 수 있습니다:
model = Model(inputs=[a1, a2], outputs=[b1, b3, b3])
Model
이 할 수 있는 것들에 대한 상세한 소개를 위해서는, 다음을 참조하세요. [시작하기] 함수형 API 가이드.
모델의 유용한 속성
model.layers
는 모델 그래프를 포함하는 계층의 평탄화된 리스트입니다.
model.inputs
는 입력 텐서의 리스트입니다.
model.outputs
는 출력 텐서의 리스트입니다.
메소드
compile
compile(self, optimizer, loss, metrics=None, loss_weights=None, sample_weight_mode=None)
훈련을 위해 모델을 구성합니다.
인수
- optimizer: 문자열(최적화기의 이름) 혹은 최적화기 객체입니다(최적화기를 참조).
- loss: 문자열(대상 함수의 이름) 혹은 대상 함수입니다(손실를 참조). 모델의 복수의 출력을 가지고 있는 경우 손실의 리스트나 딕셔너리를 넘김으로서 각 출력마다 다른 소실을 사용할 수 있습니다. 이 경우 모델에 의해서 최소화될 손실값은 개별 손실값의 합이 됩니다.
- metrics: 훈련과 시험이 진행되는 동안 모델에 의해 평가될 metric의 리스트입니다. 보통
metrics=['accuracy']
형태로 사용하게 될 것입니다(metrics를 참조). 복수 출력 모델에서 다른 출력에 대해 다른 metrics를 지정하고 싶다면 metrics={'output_a': 'accuracy'}
과 같이 딕셔너리를 넘기면 됩니다.
- loss_weights: 다른 모델 출력의 손실 기여에 가중치를 부여하기 위해 스칼라 계수(파이썬 실수)를 지정하는 선택적인 리스트 혹은 딕셔너리입니다. 이 경우 모델에 의해 최소화될 손실값은
loss_weights
계수에 의해 가중치가 부여된 개별 손실값의 합이 됩니다. 리스트의 경우, 모델의 출력에 일대일 대응이어야 합니다. 텐서의 경우, 출력 이름(문자열)이 스칼라 계수에 대응되어야 합니다.
- sample_weight_mode: 시간 단계별로 샘플에 가중치를 줄 필요가 있을 때(2차원 가중치)에는
"temporal"
로 설정하세요. 기본값인 "None"은 샘플 단위로 가중치를 주도록 합니다.(1차원) 모델이 복수의 출력을 가지고 있는 경우 딕셔너리나 모드의 리스트를 넘김으로서 각 출력마다 다른 sample_weight_mode
을 사용할 수 있습니다.
- *kwargs: Theano/CNTK 백엔드를 사용할 때는 K.function으로 전달됩니다.Tensorflow 백엔드를 사용할 때는
tf.Session.run
로 전달됩니다.
예외 발생
- ValueError:
optimizer
, loss
, metrics
, sample_weight_mode
인수가 유효하지 않은 경우입니다.
fit
fit(self, x=None, y=None, batch_size=32, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0)
정해진 횟수의 epoch 동안 모델을 훈련합니다(데이터셋 상에서 반복).
인수
- x: Numpy 배열 혹은 Numpy 배열의 리스트(복수의 입력을 가진 모델인 경우)이며 훈련 데이터입니다. 모델의 모든 입력이 이름이 있다면 입력 이름을 Numpy 배열에 대응시키는 딕셔너리를 넘길 수도 있습니다.
- y: Numpy 배열 혹은 Numpy 배열의 리스트(복수의 출력을 가진 모델의 경우)이며 목표 데이터입니다. 모델의 모든 출력이 이름이 있다면 출력 이름을 Numpy 배열에 대응시키는 딕셔너리를 넘길 수도 있습니다.
- batch_size: 정수이며 기울기를 업데이트할 샘플의 갯수 입니다.
- epochs: 정수이며 훈련 데이터 배열 상에서 반복 수행의 횟수입니다.
- verbose: 상세 정보 모드이며 0, 1, 2 중 택일합니다. 0 은 stdout에 로그를 주지 않으며, 1 은 진행 바 형태의 로그, 2 는 epoch 당 1 줄의 로그를 줍니다.
- callbacks: 훈련 진행 중 적용될 callback의 리스트 입니다(callbacks를 참조).
- validation_split: 0과 1 사이의 실수이며 훈련 데이터 중 검증 데이터로 사용될 비율 입니다. 모델은 훈련 데이터 중 비율 만큼의 부분을 별도로 구분하여 훈련에 사용하지 않고 매 epoch 끝에 손실과 모델 metrics의 평가에 사용합니다.
- validation_data: (x_val, y_val) 혹은 (x_val, y_val, val_sample_weights) 형태의 튜플이며 검증 데이터로 구분되어 훈련에 사용하지 않고 매 epoch 끝에 손실과 모델 metrics의 평가에 사용될 데이터입니다.
- shuffle: 부울이며 매 epoch 전에 훈련 데이터를 뒤섞을지 여부입니다.
- class_weight: 훈련 중 클래스의 샘플에 대한 모델의 손실을 적용하기 위해 클래스 인덱스(정수)를 가중치(실수)에 대응시키는 선택적인 딕셔너리입니다. 모델로 하여금 과소 표현 클래스의 샘플에 대해 좀 더 주의를 기울이도록 하는 데에 유용합니다.
- sample_weight: x와 같은 길이를 갖는 선택적인 배열이며 모델의 각 샘플의 손실에 적용될 가중치를 포함하고 있습니다. 시간적인 데이터의 경우, (samples, sequence_length) 형태의 2차원 배열을 넘김으로서 각 샘플의 매 시간 단계마다 다른 가중치를 적용할 수 있습니다. 이 경우에는 compile()에 sample_weight_mode="temporal"을 지정해야만 함을 주의하세요.
- initial_epoch: 훈련을 시작하게 되는 epoch입니다(이전에 진행하던 훈련을 재개할 때에 유용합니다).
반환값
History
인스턴스를 반환합니다. history
속성은 훈련 중에 수집된 모든 정보를 포함하고 있습니다.
예외 발생
- ValueError: 제공된 입력 데이터가 모델의 기대에 부합하지 않을 때 입니다.
evaluate
evaluate(self, x, y, batch_size=32, verbose=1, sample_weight=None)
시험 모든 중 모델의 손실 값과 metrics 값을 반환합니다.
Batch 단위로 계산이 이뤄집니다.
인수
- x: Numpy 배열 혹은 Numpy 배열의 리스트(복수의 입력을 가진 모델인 경우)이며 훈련 데이터입니다. 모델의 모든 입력이 이름이 있다면 입력 이름을 Numpy 배열에 대응시키는 딕셔너리를 넘길 수도 있습니다.
- y: Numpy 배열 혹은 Numpy 배열의 리스트(복수의 출력을 가진 모델의 경우)이며 목표 데이터입니다. 모델의 모든 출력이 이름이 있다면 출력 이름을 Numpy 배열에 대응시키는 딕셔너리를 넘길 수도 있습니다.
- batch_size: 정수이며 기울기를 업데이트할 샘플의 갯수 입니다.
- verbose: 상세 정보 모드이며 0, 1 중 택일합니다.
- sample_weight: 샘플의 손실과 metrics에 대한 기여의 가중치 배열입니다.
반환값
스칼라 훈련 손실(모델이 metric이 없는 경우) 혹은 스칼라의 리스트(모델이 손실값 외에 다른 metric을 가진 경우)를 반환합니다. model.metrics_names
속성은 스칼라 출력을 위한 표시 레이블을 줍니다.
predict
predict(self, x, batch_size=32, verbose=0)
입력 샘플에 대한 출력 예측을 생성합니다.
인수
- x: Numpy 배열 혹은 Numpy 배열의 리스트(복수의 입력을 가진 모델인 경우)이며 입력 데이터 입니다.
- batch_size: 정수입니다.
- verbose: 상세 정보 모드이며, 0과 1 중에 택일합니다.
반환값
예측의 numpy 배열을 반환합니다.
예외 발생
- ValueError: 제공된 입력 데이터가 모델의 기대에 부합하지 않을 때 입니다. 혹은 상태 유지 모델이 batch 크기의 배수가 아닌 갯수의 샘플을 받았을 때 입니다.
train_on_batch
train_on_batch(self, x, y, sample_weight=None, class_weight=None)
한 batch의 데이터에 대해 기울기 업데이트를 한 번 실시합니다.