CNN-3단계(Checkpoint,Save,load / 구글 드라이브 연결)

joooon na·2023년 9월 19일
0

CNN

목록 보기
2/3

1. Checkpoint/Save

  • 가장 성능이 좋았던 학습된 모델을 저장할 수 있다.
  • checkpoint의 경우, Earlystopping과 같은 단계에서 작성해준다.
- Model Checkpoint

from tensorflow.keras.callbacks import ModelCheckpoint, Earlystopping

1. es = EarlyStopping(monitor='val_loss',         # 얼리 스토핑을 적용할 관측 대상
                   min_delta=0,                # Threshold. 설정한 값 이상으로 변화해야 성능이 개선되었다고 간주.
                   patience=3,                 # 성능 개선이 발생하지 않았을 때, 몇 epoch를 더 지켜볼 것인가
                   verbose=1,
                   restore_best_weights=True)  # 성능이 가장 좋은 epoch의 가중치를 적용함.

2. mcp = ModelCheckpoint(filepath='/content/model1.h5',   # 모델 저장 경로
                      monitor='val_loss',              # 모델 저장의 관심 대상
                      verbose=1,                       # 어느 시점에서 저장되는지 알려줌
                      save_best_only=True,             # 최고 성능 모델만 저장
                      save_weights_only=False)         # True : 가중치만 저장 | False : 모델 구조 포함하여 저장
                     
                    
3. model.fit(flow_trainIDG, verbose=1, epochs=1000, validation_data=flow_valIDG, 
		  callbacks = [es, mcp])
                     

4. model 평가 완료

5. model 저장
model.save('my_first_save.h5')

6. model 불러오기
clear_session()
model = keras.models.load_model('my_first_save.h5')       # 파일이름으로 불러오기
model = keras.models.load_model('/content/model1.h5')     # 파일 저장 경로로 불러오기
model.summary()

2. 구글 드라이브 연결 후 이미지 augmentation (colab)


- 1. 드라이브 연결

from google.colab import drive
drive.mount('/content/drive')

                    
- 2. 이미지 augmentation

from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_idg = ImageDataGenerator(rotation_range=25,
                               shear_range=0.1,
                               zoom_range=0.1,
                               horizontal_flip=True,
                               vertical_flip=True,
                               width_shift_range=0.1,
                               height_shift_range=0.1,
                               )

val_idg = ImageDataGenerator()


- 3. 드라이브에 있는 데이터 flow

flow_dir_trainIDG = train_idg.flow_from_directory('/content/drive/MyDrive/my_data/my_mnist2',
                                                save_to_dir='/content/drive/MyDrive/my_data/temp/',
                                                  save_prefix='train',
                                                  save_format='jpg',
                                                  target_size=(28,28),
                                                  color_mode='grayscale',
                                                  class_mode='categorical'
                                                  )

flow_dir_valIDG = val_idg.flow_from_directory('/content/drive/MyDrive/my_data/my_mnist2',
                                            save_to_dir='/content/drive/MyDrive/my_data/temp/',
                                              save_prefix='val',
                                              save_format='jpg',
                                              target_size=(28,28),
                                              color_mode='grayscale',
                                              class_mode='categorical'
                                              )

- 4. 저장된 model load

clear_session()

model = keras.models.load_model('/content/model1.h5')

model.summary()


- 5. model 학습

model.fit(flow_dir_trainIDG, validation_data=flow_dir_valIDG,
          epochs=100, verbose=1, callbacks=[es])
profile
배고프다

0개의 댓글