인프런 커뮤니티 질문&답변

guentc1님의 프로필 이미지
guentc1

작성한 질문수

딥러닝 CNN 완벽 가이드 - Fundamental 편

Keras Callback 실습 - ModelCheckpoint, ReduceLROnPlateau, EarlyStopping

save_freq 오류가 발생합니다.

작성

·

716

0

안녕하세요 선생님.

수업내용대로 period를 사용하다가 아래와 같은 경고 문구가 나와서 save_freq를 사용했습니다.

tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.

save_freq='epoch'를 사용하면 문제가 없지만, 숫자를 입력하여 사용하면  아래와 같은 에러가 게속 발생하고 있습니다.

KeyError: 'Failed to format this callback filepath: "/content/weights.{epoch:03d}-{val_loss:.2f}.h5". Reason: \'val_loss\''

저는 kaggle이 아니라 colab에서 사용했습니다. 아래는 실행했던 코드입니다.

from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.keras.optimizers import Adam

model = create_model()
model.compile(optimizer=Adam(learning_rate=0.001), loss='categorical_crossentropy', metrics=['accuracy'])

mcp_cb = ModelCheckpoint(filepath='/content/weights.{epoch:02d}-{val_loss:.2f}.h5',
        monitor='val_loss', save_best_only=True, save_weights_only=True, mode='min', save_freq=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])

답변 1

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

저도 save_freq에 epoch외에는 사용해보진 않았습니다. 만약 숫자값을 넣으면 해당 batch step 수만큼 학습 할 때마다 checkpoint를 만들게 되는데, 현재 filepath가 그걸 수용하게 되어 있지 않은것 같습니다. 

사실 이걸 수용할 수 있게 keras에서 지원하지 않는 것 같습니다. 지금 기능이 지원되었는지 확실 하지 않습니다. 

아래 기능 요청건 확인해 보시지요. 

https://github.com/tensorflow/tensorflow/issues/38668

그리고 숫자값을 넣게 되면 너무 많은 checkpoint 파일을 만들게 됩니다. 굳이 만드실 필요는 없어 보입니다만,  꼭 만드셔야 겠다면 기능이 추가되었는지 해당 github에서 모니터링을 더 해보셔야 할 것 같습니다. 

guentc1님의 프로필 이미지
guentc1
질문자

선생님, 항상 답변 감사드립니다. 

알려주신 요청건 확인하고 찾아보겠습니다~!

guentc1님의 프로필 이미지
guentc1

작성한 질문수

질문하기