728x90
반응형
ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1)
: 특정 조건에 맞춰서 모델을 파일로 저장함
- filepath: filepath는 (on_epoch_end에서 전달되는) epoch의 값과 logs의 키로 채워진 이름 형식 옵션을 가질 수 있음. (ex. weights.{epoch:02d}-{val_loss:.2f}.hdf5)
- monitor: 모니터할 지표(loss 또는 평가 지표)
- save_best_only: 가장 좋은 성능을 나타내는 모델만 저장할 여부
- save_weights_only: Weights만 저장할 지 여부 (True 를 추천함)
- mode: {auto, min, max} 중 하나. monitor 지표가 감소해야 좋을 경우 min, 증가해야 좋을 경우 max, auto는 monitor 이름에서 자동으로 유추.
- period : 간격? 같은 의미. 3이면 3번 할때마다 저장함
from tensorflow.keras.callbacks import ModelCheckpoint
model = create_model()
model.compile(optimizer=Adam(0.001), loss='categorical_crossentropy', metrics=['accuracy'])
mcp_cb = ModelCheckpoint(filepath='/kaggle/working/weights.{epoch:02d}-{val_loss:.2f}.hdf5', monitor='val_loss',
save_best_only=True, save_weights_only=True, mode='min', period=3, verbose=1)
history = model.fit(x=tr_images, y=tr_oh_labels, batch_size=128, epochs=10, validation_data=(val_images, val_oh_labels),
callbacks=[mcp_cb])
ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=10, verbose=0, mode='auto', min_delta=0.0001, cooldown=0, min_lr=0)
: 특정 epochs 횟수동안 성능이 개선 되지 않을 시 Learning rate를 동적으로 감소 시킴
- monitor: 모니터할 지표(loss 또는 평가 지표)
- factor: 학습 속도를 줄일 인수. new_lr = lr * factor
- patience: Learing Rate를 줄이기 전에 monitor할 epochs 횟수.
- mode: {auto, min, max} 중 하나. monitor 지표가 감소해야 좋을 경우 min, 증가해야 좋을 경우 max, auto는 monitor 이름에서 유추.
from tensorflow.keras.callbacks import ReduceLROnPlateau model = create_model() model.compile(optimizer=Adam(0.001), loss='categorical_crossentropy', metrics=['accuracy']) rlr_cb = ReduceLROnPlateau(monitor='val_loss', factor=0.3, patience=3, mode='min', verbose=1) history = model.fit(x=tr_images, y=tr_oh_labels, batch_size=128, epochs=30, validation_data=(val_images, val_oh_labels), callbacks=[rlr_cb])
EarlyStopping(monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto', baseline=None, restore_best_weights=False)
: 특정 epochs 동안 성능이 개선되지 않을 시 학습을 조기에 중단
- monitor: 모니터할 지표(loss 또는 평가 지표)
- patience: Early Stopping 적용 전에 monitor할 epochs 횟수.
- mode: {auto, min, max} 중 하나. monitor 지표가 감소해야 좋을 경우 min, 증가해야 좋을 경우 max, auto는 monitor 이름에서 유추.
from tensorflow.keras.callbacks import EarlyStopping
model = create_model()
model.compile(optimizer=Adam(0.001), loss='categorical_crossentropy', metrics=['accuracy'])
ely_cb = EarlyStopping(monitor='val_loss', patience=3, mode='min', verbose=1)
history = model.fit(x=tr_images, y=tr_oh_labels, batch_size=128, epochs=30, validation_data=(val_images, val_oh_labels),
callbacks=[ely_cb])
Call back 함수 적용
from tensorflow.keras.callbacks import ModelCheckpoint, ReduceLROnPlateau, EarlyStopping
model = create_model()
model.compile(optimizer=Adam(0.001), loss='categorical_crossentropy', metrics=['accuracy'])
mcp_cb = ModelCheckpoint(filepath='/kaggle/working/weights.{epoch:02d}-{val_loss:.2f}.hdf5', monitor='val_loss',
save_best_only=True, save_weights_only=True, mode='min', period=1, verbose=0)
rlr_cb = ReduceLROnPlateau(monitor='val_loss', factor=0.3, patience=5, mode='min', verbose=1)
ely_cb = EarlyStopping(monitor='val_loss', patience=7, mode='min', verbose=1)
history = model.fit(x=tr_images, y=tr_oh_labels, batch_size=128, epochs=40, validation_data=(val_images, val_oh_labels),
callbacks=[mcp_cb, rlr_cb, ely_cb])
728x90
반응형
'Deep learning' 카테고리의 다른 글
[pytorch] 학습의 가속화를 위한 배치 정규화(Batch Normalization) (0) | 2024.05.09 |
---|---|
[Deep Learning] 인공지능의 기초: 퍼셉트론부터 인공 신경망까지 (2) | 2024.02.06 |
[Deep learning] 가중치 초기화(weight initialization) (feat. Xavier, He,normal, uniform) (1) | 2023.09.06 |
[Deep learning] 정제와 정규화 (cleaning and normalization) (0) | 2023.03.03 |