안 쓰던 블로그

ModelCheckpoint가 h5 파일을 저장하지 않는 문제 본문

머신러닝/메모 및 에러 해결

ModelCheckpoint가 h5 파일을 저장하지 않는 문제

proqk 2021. 10. 6. 13:51
반응형
chkpoint_filepath = "best_model.h5"
Mycallback = tf.keras.callbacks.ModelCheckpoint(
    filepath = chkpoint_filepath,
    monitor = "val_accuracy", #모델을 저장할 때 기준이 되는 값
    save_weights_only = False,
    mode = "max", #for val_acc, this should be max
    save_best_only = True,
    save_freq = "epoch")

학습을 돌릴 때, 가장 결과가 좋았을 때의 모델을 저장하는 ModelCheckpoint를 많이 사용한다.

나도 항상 이것을 잘 사용을 해 왔다.

그런데 이번에 늘 쓰던 코드임에도 모델이 아예 생성되지 않는 에러가 있었다.

 

OSError: SavedModel file does not exist at: best_model.h5/{saved_model.pbtxt|saved_model.pb}

 

늘 쓰던 코드에서 바뀐 게 없는데..

캐글 노트북 사용 중이었으므로 캐글 내 working 폴더도 확인해 봤는데 학습이 끝났음에도 아예 모델이 없었다.

 

이 문제는 ModelCheckpoint 콜백의 save_best_only

= True 옵션을 주었을 때

 작동하는 방법 때문에 나는 에러였다.

ModelCheckpoint 콜백에서 save_best_only = True를 하게 되면, 모델 정확도가 증가하지 않으면 모델을 저장하지 못하는 것 같다.

 

에폭 수를 늘리고, 몇 번 더 돌렸더니 또 저장이 되더라

 

참고, 스택오버플로우를 보니 ModelCheckpoint 콜백에서 save_weights_only=True 옵션을 사용할 때는 model.load_weights(checkpoint_path)를 사용하는 것이 좋다고 한다. 이렇게 하면 최신 모델 가중치가 로드된다

https://stackoverflow.com/questions/62864731/modelcheckpoint-not-saving-the-hdf5-file

 

반응형
Comments