- Keras 소개
- [시작하기] Sequential 모델 가이드
- [시작하기] 함수형 API 가이드
- [시작하기] FAQ
- [모델] Keras의 모델
- [모델] 함수형 API
- [모델] Sequential
- [계층] Keras의 계층
- [계층] Core 계층
- [계층] 합성곱 계층
- [계층] 풀링 계층
- [계층] 부분적으로 연결된 계층
- [계층] 재발 계층
- [계층] 임베딩 계층
- [계층] Merge 계층
- [계층] 고급 활성화 계층
- [계층] 표준화 계층
- [계층] 노이즈 계층
- [계층] 계층 Wrappers
- [계층] 자신만의 Keras 계층 만들기
- [전처리] 시퀀스 전처리
- [전처리] 텍스트 전처리
- [전처리] 이미지 전처리
- Metrics
- 손실
- 최적화기
- 활성화
- Callbacks
- 데이터셋
- 애플리케이션
- 백엔드 1
- 백엔드 2
- 백엔드 3
- 백엔드 4
- 백엔드 5
- 초기화기
- 정규화기
- 제한
- 시각화
- Scikit-Learn API
- 유용한 도구
Sequential 모델 API
시작하기에 앞서, [시작하기] Sequential 모델 가이드를 읽어주세요.
모델의 유용한 속성
model.layers
은 모델에 추가된 계층의 리스트입니다.
Sequential 모델 메소드
compile
compile(self, optimizer, loss, metrics=None, sample_weight_mode=None)
학습 과정의 환경을 구성합니다.
인수
- optimizer: 문자열(최적화기의 이름) 혹은 최적화기 객체입니다(최적화기를 참조).
- loss: 문자열(대상 함수의 이름) 혹은 대상 함수입니다(손실을 참조).
- metrics: 훈련과 시험이 진행되는 동안 모델에 의해 평가될 metric의 리스트입니다. 보통
metrics=['accuracy']
형태로 사용하게 될 것입니다(metrics를 참조).
- sample_weight_mode: 시간 단계별로 샘플에 가중치를 줄 필요가 있을 때(2차원 가중치)에는
"temporal"
로 설정하세요. 기본값인 "None"은 샘플 단위로 가중치를 주도록 합니다.(1차원)
- *kwargs: Theano/CNTK 백엔드를 사용할 때는 K.function으로 전달됩니다.Tensorflow 백엔드를 사용할 때는
tf.Session.run
로 전달됩니다.
예제
model = Sequential()
model.add(Dense(32, input_shape=(500,)))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
fit
fit(self, x, y, batch_size=32, epochs=10, 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 배열의 리스트(복수의 입력을 가진 모델인 경우)이며 입력 데이터입니다.
- y: Numpy 배열이며 레이블입니다.
- batch_size: 정수이며 기울기를 업데이트할 샘플의 갯수 입니다.
- epochs: 정수이며 모델을 훈련할 epoch 횟수 입니다.
- verbose: 0 은 stdout에 로그를 주지 않으며, 1 은 진행 바 형태의 로그, 2 는 epoch 당 1 줄의 로그를 줍니다.
- callbacks:
keras.callbacks.Callback
인스턴스의 리스트이며 훈련 진행 중 적용될 callback의 리스트 입니다(callbacks를 참조).
- validation_split: 실수이며(0. < x < 1) 검증 데이터로 구분된 데이터의 비율 입니다.
- validation_data: 튜플 (x_val, y_val) 혹은 (x_val, y_val, val_sample_weights)이며 검증 데이터로 구분되는 데이터 입니다. validation_split에 오버라이드 됩니다.
- shuffle: 부울 혹은 'batch'에 대해서는 문자열이며 매번의 epoch마다 샘플의 순서를 뒤섞을지 여부 입니다. 'batch'는 HDF5 데이터의 제한 사항을 취급하기 위한 특별한 옵션으로, batch 단위의 뭉치로 순서를 뒤섞습니다.
- class_weight: 클래스를 가중치 값에 대응시키는 딕셔너리이며 (훈련 중에 한하여)손실함수를 스케일링하는 데에 스입니다.
- sample_weight: Numpy 배열 형태의 훈련 샘플의 가중치이며, (훈련 중에 한해) 손실 함수를 스케일링할 때 쓰입니다. 입력 샘플과 동일한 길이의 1차원 Numpy 배열(즉 가중치와 샘플이 1:1로 대응) 혹은 시간적인 경우에는 매 샘플마다 시간 단계별로 다른 가중치를 적용하기 위해 (samples, sequence_length)과 같은 형태의 2차원 배열을 사용할 수도 있습니다. 이 경우에는 compile()에 sample_weight_mode="temporal"을 지정해야만 합니다.
- initial_epoch: 훈련을 시작하게 되는 epoch입니다(이전에 진행하던 훈련을 재개할 때에 유용합니다).
반환값
History
객체가 반환됩니다. History.history
속성은 이어지는 epoch 각각에서의 훈련 손실 값과 metric 값을 기록하며 (가능한 경우에) 검증 손실 값과 metric 값도 기록합니다.
예외 발생
- RuntimeError: 모델이 한 번도 컴파일되지 않았을 때 입니다.
evaluate
evaluate(self, x, y, batch_size=32, verbose=1, sample_weight=None)
입력 데이터에 대해 batch 마다 손실을 계산합니다.
인수
- x: Numpy 배열 혹은 Numpy 배열의 리스트(복수의 입력을 가진 모델인 경우)이며 입력 데이터입니다.
- y: Numpy 배열이며 레이블입니다.
- batch_size: 정수이며 매 기울기 업데이트마다의 샘플의 갯수입니다.
- verbose: 세부 정보 모드, 0 혹은 1 중 택일합니다.
- sample_weight: Numpy 배열이며 샘플의 가중치입니다.
반환값
스칼라 시험 손실(모델이 metric이 없는 경우) 혹은 스칼라의 리스트(모델이 손실값 외에 다른 metric을 가진 경우)를 반환합니다. model.metrics_names
속성은 스칼라 출력을 위한 표시 레이블을 줍니다.
예외 발생
- RuntimeError: 모델이 한 번도 컴파일되지 않았을 때 입니다.
predict
predict(self, x, batch_size=32, verbose=0)
입력 샘플에 대하여 예측값을 출력합니다.
입력 샘플은 매 batch마다 처리됩니다.
인수
- x: Numpy 배열 형태의 입력 데이터입니다.
- batch_size: 정수입니다.
- verbose: 세부 정보 모드, 0 혹은 1 중 택일합니다.
반환값
Numpy 배열 형태의 예측을 반환합니다.
train_on_batch
train_on_batch(self, x, y, class_weight=None, sample_weight=None)
한 batch의 샘플에 대해 하나의 기울기를 업데이트 합니다.
인수
- x: Numpy 배열 혹은 Numpy 배열의 리스트(복수의 입력을 가진 모델인 경우)이며 입력 데이터입니다.
- y: Numpy 배열이며 레이블입니다.
- class_weight: 클래스를 가중치 값에 대응시키는 딕셔너리이며 (훈련 중에 한하여)손실함수를 스케일링하는 데에 쓰입니다.
- sample_weight: Numpy 배열이며 샘플의 가중치입니다.
반환값
스칼라 훈련 손실(모델이 metric이 없는 경우) 혹은 스칼라의 리스트(모델이 손실값 외에 다른 metric을 가진 경우)을 반환합니다. model.metrics_names
속성은 스칼라 출력을 위한 표시 레이블을 줍니다.