안 쓰던 블로그
ModelCheckpoint가 h5 파일을 저장하지 않는 문제 본문
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