[파이썬] Keras 콜백 사용법

콜백은 Keras 라이브러리에서 제공하는 강력한 기능 중 하나입니다. 콜백은 모델의 훈련 과정 동안 특정 이벤트가 발생할 때 추가적인 동작을 수행하도록 돕습니다. 이러한 콜백을 사용하여 모델의 성능을 모니터링하거나 훈련 중간에 가중치를 저장하는 등의 작업을 수행할 수 있습니다.

콜백의 종류

Keras에서는 다양한 종류의 콜백을 제공합니다. 몇 가지 유용한 콜백의 예시를 살펴보겠습니다.

ModelCheckpoint 콜백

ModelCheckpoint 콜백은 훈련 중간에 모델의 가중치를 저장하는 역할을 합니다. 이는 오랜 시간이 걸리는 훈련 과정 중에 장애나 중단으로 인해 훈련된 모델의 결과를 보존하는 데 유용합니다. 아래는 ModelCheckpoint 콜백의 예시 코드입니다.

from keras.callbacks import ModelCheckpoint

# 모델 저장 경로 설정
filepath = 'weights.best.hdf5'

# ModelCheckpoint 콜백 정의
checkpoint = ModelCheckpoint(filepath, 
                             monitor='val_loss', 
                             verbose=1, 
                             save_best_only=True, 
                             mode='min')

# 모델 훈련 시 콜백 사용
model.fit(X_train, y_train, 
          validation_data=(X_valid, y_valid), 
          epochs=10, 
          callbacks=[checkpoint])

위의 예시에서는 val_loss를 모니터링하여 가장 낮은 검증 손실을 가진 모델 가중치만 저장하도록 설정하였습니다.

EarlyStopping 콜백

EarlyStopping 콜백은 훈련 도중에 성능 향상이 더 이상 없을 때 훈련을 중지하는 역할을 합니다. 이는 과적합을 방지하고 불필요한 훈련 시간을 절약하는 데 도움이 됩니다. 아래는 EarlyStopping 콜백의 예시 코드입니다.

from keras.callbacks import EarlyStopping

# EarlyStopping 콜백 정의
early_stopping = EarlyStopping(monitor='val_loss', 
                               patience=3, 
                               verbose=1)

# 모델 훈련 시 콜백 사용
model.fit(X_train, y_train, 
          validation_data=(X_valid, y_valid), 
          epochs=10, 
          callbacks=[early_stopping])

위의 예시에서는 val_loss를 모니터링하여 3번의 연속적인 검증 손실 증가가 있을 경우 훈련을 중지합니다.

콜백 사용 방법

Keras에서는 콜백을 모델의 fit() 메소드의 callbacks 매개변수를 통해 설정할 수 있습니다. 따라서 모델 훈련 시 콜백을 사용하는 방법은 간단합니다. 아래는 콜백을 사용하여 모델을 훈련하는 예시 코드입니다.

from keras.models import Sequential
from keras.layers import Dense

# 모델 생성
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))

# 모델 컴파일
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 모델 훈련
model.fit(X_train, y_train, 
          validation_data=(X_valid, y_valid), 
          epochs=10, 
          callbacks=[checkpoint, early_stopping])

위의 예시에서는 ModelCheckpoint와 EarlyStopping 콜백을 함께 사용하여 훈련 동안에 모델 가중치를 저장하고 조기 종료하는 방법을 보여줍니다.

Keras의 콜백은 모델의 성능 모니터링 및 훈련 중 추가 동작 수행을 위한 강력한 도구입니다. 위의 예시 코드를 참고하여 콜백을 사용하여 모델을 최적화하고 더 나은 결과를 얻을 수 있습니다.