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

김진혁님의 프로필 이미지
김진혁

작성한 질문수

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

모델 불러와서 evaluate하기

작성

·

328

0

안녕하세요 선생님

모델을 학습 후 model.save를 이용하여 mh5형식으로 저장을 하여 추 후에 활용 하려고 할때 model.save를 이용하여 모델을 저장 후에

학습한 모델을 load_model 함수를 이용하여 불러와서 활용하려고 할 때 저장된 모델을 불러와 evaluate 또는 prediction 함수를 활용 하면 어떤 가중치가 적용되는지 궁금합니다.

 

예를들어 

1. model.compile에 있는 loss 기준으로 가장 낮은 에폭의 가중치를 가져오는지?

2. earlystop를 활용 했을때는 EarlyStopping의 monitor에 들어간 밸류를 기준으로 가장 좋은 가중치를 불러오는지

 

답변 부탁드립니다.

감사합니다.

답변 3

0

김진혁님의 프로필 이미지
김진혁
질문자

완강하고 실제 제 연구에 적용중이다보니까 앞을 까먹었습니다.

감살합니다.

0

김진혁님의 프로필 이미지
김진혁
질문자

답변 정말 감사합니다.

 

그럼 예를들어 에폭이 20인데 val_loss가 17번째 에폭에서 가장 좋았다면 17번째 에폭에서 모델을 저장 해야 하는건가요? 그런거는 어떻게 하는지 알려주실수 있을까요?  

 

예를들면 선생님이 강의때 하신것처럼 model.save 하여 .h5로 모델을 저장하고  models.load_model 로 불러올때 에폭을 정해주면 그 해당하는 에폭의 웨이트값이 불러와 지면서 활용 할 수 있는 방법을 찾고싶습니다.

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

epoch 시마다 다른 이름으로 모델을 저장하면 됩니다. Keras Framework 세션의 Keras Callback 실습 - ModelCheckpoint, ReduceLROnPlateau, EarlyStopping 강의 영상에서 해당 방법을 수행 하실 수 있습니다. 

0

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

안녕하십니까, 

모델을 load 하면 save 한 시점 모델의 weight를 그대로 사용합니다. 

가장 낮은 loss의 epoch를 기억하거나 가장 좋은 밸류의 가중치를 로드하거나 자동으로 하지 않습니다. (다만, 가장 최근에 생성된 모델을 자동으로 로드하는 기능은 있습니다)

즉 save(저장)시에 가장 낮은 loss또는 가장 좋은 metric를 가졌을 때의 epoch에 해당하는 weight에 해당하는 모델을 기억하여 저장한 뒤에 이 모델을 load해주면 됩니다. 

감사합니다.  

김진혁님의 프로필 이미지
김진혁

작성한 질문수

질문하기