[Deep learning] Callback 함수

2023. 2. 6. 23:27·Deep learning
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)  (1) 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
'Deep learning' 카테고리의 다른 글
  • [pytorch] 학습의 가속화를 위한 배치 정규화(Batch Normalization)
  • [Deep Learning] 인공지능의 기초: 퍼셉트론부터 인공 신경망까지
  • [Deep learning] 가중치 초기화(weight initialization) (feat. Xavier, He,normal, uniform)
  • [Deep learning] 정제와 정규화 (cleaning and normalization)
ISFP의 블로그
ISFP의 블로그
이건 첫 번째 레슨, 업무에서 마주친 문제 해결 경험 공유하기 이건 두 번째 레슨, 개인적으로 공부한 데이터/AI 지식을 기록하기 이건 세 번째 레슨, 다른 사람과 비교하지 말고 오직 어제의 나와 비교하기
  • ISFP의 블로그
    resultofeffort
    ISFP의 블로그
  • 전체
    오늘
    어제
    • 분류 전체보기 (117)
      • python (25)
      • pythonML (27)
      • Linux (0)
      • 오류Error (8)
      • information (7)
      • Deep learning (5)
      • pytorch (29)
      • 코딩테스트 (4)
      • 밑바닥 DL (4)
      • 논문 리뷰 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    머신러닝
    토큰화
    Deep Learning
    cnn
    machinelearning
    딥러닝
    Python
    자연어처리
    인공지능
    티스토리챌린지
    오블완
    Pandas
    텍스트전처리
    데이터분석
    nlp
    pytorch
    deeplearning
    Ai
    분류
    konlpy
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.5
ISFP의 블로그
[Deep learning] Callback 함수
상단으로

티스토리툴바