개발공부

EarlyStopping 라이브러리 사용법 본문

Python/Deep Learning

EarlyStopping 라이브러리 사용법

mscha 2022. 6. 13. 12:25

EarlyStopping ?

학습을 할 때 무작정 에포크를 늘린다고 해서 꼭 좋은 결과만 나오는 것은 아니다.

EarlyStopping은 지정된 에포크 횟수 동안 성능 향상이 없으면

자동으로 훈련을 멈추는 라이브러리이다.

 

예제

def build_model() :
    model = Sequential()
    model.add(Dense(units = 64, activation = 'relu', input_shape = (8, )))
    model.add(Dense(units = 64, activation = 'relu'))
    model.add(Dense(units = 64, activation = 'relu'))
    model.add(Dense(units = 34, activation = 'relu'))
    model.add(Dense(units = 55, activation = 'relu'))
    model.add(Dense(units = 40, activation = 'relu'))
    model.add(Dense(units = 30, activation = 'relu'))
    model.add(Dense(units = 20, activation = 'relu'))
    model.add(Dense(units = 1, activation = 'linear'))

    # 옵티마이저의 learning rate 를 설정하는 방법
    # metrics 검증의 척도, 학습의 에포크가 끝날때마다 출력하게 된다.
    model.compile(tf.keras.optimizers.RMSprop(learning_rate = 0.001), loss = 'mse', metrics = ['mse', 'mae'])
    return model
model = build_model()

# patience : 에포크를 10번 단위로 봤을 때 그 안에 성능 향상이 없으면 학습을 중단하라.
early_stop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)

epoch_history = model.fit(X_train, y_train, epochs = 100000, 
				validation_split = 0.2, callbacks = [early_stop])
# 콜백이란 ? 프레임워크가 실행하는 코드, 코드 실행을 프레임워크에 맡기는 것, 
# 우리는 그 결과만 받는다.

아래 결과를 보면 104번째 Epoch까지 한 후 성능 향상이 없어 학습이 종료된 것을 볼 수 있다.