OverFitting 되는 모델의 경우, epoch이 커질 수록 Loss가 줄다가 다시 늘게 되는 아래와 같은 경우가 생긴다. 150번정도에 EarlyStopping이 되면 overfitting이 되지 않을 수 있는데 더 이상 개선의 여지가 없을 때 학습을 종료시키는 콜백함수이다
콜백함수란? 어떤 함수를 수행 시 그 함수에서 내가 지정한 함수를 호출하는 것. 여기서는 fit() 함수에서 EarlyStopping() 콜백함수가 학습 과정 중 매번 호출된다.
from tensorflow.python.keras.callbacks import EarlyStopping
early_stopping = EarlyStopping()
hist = model.fit(x_train,y_train,epochs=1000,batch_size=10,validation_data=(x_val,y_val),callbacks=[early_stopping])
위와 같이 epoch을 1000으로 지정했더라도 학습과정 중 EarlyStopping 콜백함수를 호출하여 해당 조건이 되
면 학습을 조기종료 시키는데 EarlyStopping 콜백함수에서 설정할 수 있는 인자는 다음과 같다.
tensorflow.keras.callbacks.EarlyStopping(monitor='val_loss',min_delta=0,patience=0,verbose=0,mode='auto')
- monitor : 관찰하고자 하는 항목으로 'val_loss'나 'val_acc'를 주로 사용
- min_delta : 개선되고 있다고 판단하기 위한 최소 변화량. 변화량이 min_delta보다 적은 경우 개선이 없다고 판단.
- patience : 개선이 없다고 바로 종료하지 않고 개선이 없는 epoch를 얼마나 기다려 줄 것인가를 지정. 만약 10이라고 하면 개선이 없는 epoch를 10번째 지속될 경우 학습을 종료
- verbose : 얼마나 자세하게 정보를 표현할 것인가를 지정 (0,1,2)
- mode : 관찰 항목에 대해 개선이 없다고 판단하기 위한 기준을 지정. 예를 들어, 관찰 항목이
'val_loss'인 경우 감소되는 것이 멈출 때 종료되어야 하므로 'min'으로 설정된다. auto는 관찰하는 이름에 따라 자동으로 지정, min은 관찰하고 있는 항목이 감소되는 것을 멈출 때 종료, max는 관찰하고 있는 항목이 증가되는 것을 멈출 때 종료.
'Deep Learning' 카테고리의 다른 글
Deep Learning : 여러 클래스로 분류할때, 아웃풋노드에서 사용하는액티베이션함수 소프트맥스 (0) | 2022.06.13 |
---|---|
Deep Learning : Flatten 라이브러리 사용하는 이유 (0) | 2022.06.13 |
Deep Learning : validation data란 무엇이고, code에서 사용하는 방법 / 파라미터 validation_split (0) | 2022.06.13 |
Deep Learning : learning rate를 옵티마이저에서 셋팅하는 코드 / 실습문제 풀기 (0) | 2022.06.13 |
Deep Learning : 텐서플로우로, 분류의 문제 모델링 하는 방법 (0) | 2022.06.10 |