Path: blob/master/site/ko/guide/keras/custom_callback.ipynb
38536 views
Copyright 2020 The TensorFlow Authors.
자신만의 콜백 작성하기
시작하기
콜백은 훈련, 평가 또는 추론 중에 Keras 모델의 동작을 사용자 정의할 수 있는 강력한 도구입니다. TensorBoard로 훈련 진행 상황과 결과를 시각화하기 위한 tf.keras.callbacks.TensorBoard 또는 훈련 도중 모델을 주기적으로 저장하는 tf.keras.callbacks.ModelCheckpoint 등이 여기에 포함됩니다.
이 가이드에서는 Keras 콜백이 무엇인지, 무엇을 할 수 있는지, 어떻게 자신만의 콜백을 빌드할 수 있는지 배웁니다. 콜백 애플리케이션의 몇 가지 간단한 데모를 통해 시작할 수 있습니다.
Setup
Keras 콜백 개요
모든 콜백은 keras.callbacks.Callback 클래스를 하위 클래스화하며, 훈련, 테스트 및 예측의 다양한 단계에서 호출되는 메서드 세트를 재정의합니다. 콜백은 훈련 중 모델의 내부 상태 및 통계를 볼 때 유용합니다.
콜백(키워드 인수 callbacks와 같은)의 목록을 다음 모델 메서드에 전달할 수 있습니다.
keras.Model.fit()keras.Model.evaluate()keras.Model.predict()
콜백 메서드의 개요
전역 메서드
on_(train|test|predict)_begin(self, logs=None)
fit/evaluate/predict 시작 시 호출됩니다.
on_(train|test|predict)_end(self, logs=None)
fit/evaluate/predict 종료 시 호출됩니다.
훈련/테스트/예측을 위한 배치 레벨의 메서드
on_(train|test|predict)_batch_begin(self, batch, logs=None)
훈련/테스트/예측 중에 배치를 처리하기 직전에 호출됩니다.
on_(train|test|predict)_batch_end(self, batch, logs=None)
훈련/테스트/예측이 끝날 때 호출됩니다. 이 메서드에서 logs는 메트릭 결과를 포함하는 dict입니다.
에포크 레벨 메서드(훈련만 해당)
on_epoch_begin(self, epoch, logs=None)
훈련 중 epoch가 시작될 때 호출됩니다.
on_epoch_end(self, epoch, logs=None)
훈련 중 epoc가이 끝날 때 호출됩니다.
기본적인 예제
구체적인 예를 살펴보겠습니다. 시작하려면 tensorflow를 가져오고 간단한 Sequential Keras 모델을 정의합니다.
그런 다음 Keras 데이터세트 API에서 훈련 및 테스트용 MNIST 데이터를 로드합니다.
이제 다음의 경우 로깅하는 간단한 사용자 정의 콜백을 정의합니다.
fit/evaluate/predict가 시작하고 끝날 때각 에포크가 시작하고 끝날 때
각 훈련 배치가 시작하고 끝날 때
각 평가(테스트) 배치가 시작하고 끝날 때
각 추론(예측) 배치가 시작하고 끝날 때
사용해 보겠습니다.
logs dict 사용법
logs dict에는 손실값과 배치 또는 에포크의 끝에 있는 모든 메트릭이 포함됩니다. 이 예제에는 손실 및 평균 절대 오차가 포함됩니다.
self.model 속성의 사용법
메서드 중 하나가 호출될 때 로그 정보를 수신하는 것 외에도 콜백은 현재 훈련/평가/추론 라운드와 연결된 모델(self.model)에 액세스할 수 있습니다.
콜백에서 self.model로 수행할 수 있는 연산은 다음과 같습니다.
훈련을 즉시 중단하려면
self.model.stop_training = True를 설정합니다.self.model.optimizer.learning_rate와 같은 옵티마이저(self.model.optimizer로 사용 가능)의 하이퍼파라미터를 변경합니다.주기적으로 모델을 저장합니다.
각 에포크가 끝날 때 몇 가지 테스트 샘플에
model.predict()의 출력을 기록하여 훈련 중에 온전성 검사용으로 사용합니다.각 에포크가 끝날 때 중간 특성의 시각화를 추출하여 시간이 지남에 따라 모델이 학습하는 내용을 모니터링합니다.
기타
몇 가지 실제 예를 살펴보겠습니다.
Keras 콜백 애플리케이션의 예
최소 손실 시 조기 중지
이 첫 번째 예는 self.model.stop_training (boolean) 속성을 설정하여 최소 손실에 도달했을 때 훈련을 중단하는 Callback을 생성하는 방법을 보여줍니다. 선택적으로, 로컬 최소값에 도달한 후 중단하기 전에 기다려야 하는 에포크 수를 지정하는 인수 patience을 제공할 수 있습니다.
tf.keras.callbacks.EarlyStopping은 더 완전한 일반적인 구현을 제공합니다.
학습 속도 스케줄링
이 예제에서는 사용자 정의 콜백을 사용하여 훈련 동안 옵티마이저의 학습 속도를 동적으로 변경하는 방법을 보여줍니다.
보다 일반적인 구현에 대해서는 callbacks.LearningRateScheduler를 참조하세요.
내장 Keras 콜백
API 문서를 읽고 기존 Keras 콜백을 확인하세요. 애플리케이션에는 CSV에 로깅하기, 모델 저장하기, TensorBoard에서 메트릭 시각화하기 등이 포함됩니다.
TensorFlow.org에서 보기
Google Colab에서 실행
GitHub에서 소스 보기
노트북 다운로드