졸업프로젝트를 진행하면서 분명히 batch size와 epochs에 따른 정확도의 차이가 없음에도 epoch를 700번이면 700번 모두 도는 것이 시간낭비라고 느껴졌다.
그래서 Keras의 EarlyStopping을 사용하였다.
EarlyStopping은 loss, metric등의 개선이 없을 경우 학습 도중 미리 학습을 종료시킬 수 있다.
사용방법은
1. from keras import Earlystopping 를 맨 위에 추가
2. early_stopping = EarlyStopping() 를 추가
EarlyStopping뒤의 괄호에는 다음의 옵션을 줄 수가 있다.
- monitor :EarlyStopping의 기준이 되는 값을 입력한다. 만약 'val_loss'를 입력하면 val_loss가 더이상 감소되지 않을 경우 EarlyStopping을 적용한다.
- min_delta : 개선된 것으로 간주하기 위한 최소한의 변화량이다.
- patience : Training이 진행됨에도 더이상 monitor되는 값의 개선이 없을 경우, 최적의 monitor 값을 기준으로 몇 번의 epoch을 진행할 지 정하는 값이다.
- verbose :0 또는 1만 가능. 1일 경우, EarlyStopping이 적용될 때, 화면에 적용되었다고 나타낸다.
0일 경우, 화면에 나타냄 없이 종료한다.
- mode : "auto" 또는 "min" 또는 "max"monitor되는 값이 최소가 되어야 하는지, 최대가 되어야 하는지 알려주는 인자이다. 예를 들어, monitor하는 값이 val_acc 즉 정확도일 경우, 값이 클수록 좋기때문에 "max"를 입력하고, val_loss일 경우 작을수록 좋기 때문에 "min"을 입력한다. "auto"는 모델이 알아서 판단한다.
- baseline : 모델이 달성해야하는 최소한의 기준값을 선정한다. patience 이내에 모델이 baseline보다 개선됨이 보이지 않으면 Training을 중단시킨다.
- restore_best_weights : True, False 값 중 하나이다. True라면 training이 끝난 후, model의 weight를 monitor하고 있던 값이 가장 좋았을 때의 weight로 복원한다. False라면, 마지막 training이 끝난 후의 weight로 놔둔다.
3. 아래와 같은 형식의 fit을 사용중이라면 fit()내에 callbacks=[early_stopping]을 추가한다.
ex ) history = mip_function.fit(trnx, trny, validation_data = (tstx, tsty), batch_size = batch_size, epochs = epochs,callbacks=[early_stopping])
'머신러닝 & 딥러닝' 카테고리의 다른 글
| [ML] 내 dataSet으로 transfer learning하기 (0) | 2021.10.05 |
|---|