본문 바로가기

전체 글119

learning_curve 함수 설정 def learning_curve(history, epoch): # 정확도 차트 epoch_range = np.arange(1, epoch+1 ) plt.plot(epoch_range, history.history['accuracy']) plt.plot(epoch_range, history.history['val_accuracy']) plt.title('Model Accuracy') plt.xlabel('Epoch') plt.ylabel('Accuracy') plt.legend( ['Train', 'Val']) plt.show() # loss 차트 epoch_range = np.arange(1, epoch+1 ) plt.plot(epoch_range, history.history['loss']) plt... 2021. 3. 4.
epoch마다 기록을 남기는 CSVLogger epoch마다 가장 좋은 모델을 찾아 저장하는 ModelCheckpoint도 있지만, epoch마다 그 훈련 기록을 저장하는 CSVLogger도 있다. 사용을 하기 위해 먼저 라이브러리 적용 후 from tensorflow.keras.callbacks import CSVLogger csv_logger = CSVLogger(filename=LOGFILE_PATH, append = True) CSVLogger를 설정하고 변수에 저장한다. filename= : 저장할 파일명. csv append = : True로 설정시 기록을 덮어쓰지않고 차례로 계속 저장한다. 이외 separator도 자주 쓴다. csv파일에서 요소를 구분하는데 뭘로 구분할것인지..(ex)separator=',' 후에 모델 훈련시 사용한다... 2021. 3. 4.
epoch마다 가장 좋은 모델을 저장하는 ModelCheckpoint 딥러닝을 할때 성능을 위해서 epoch를 설정한다. ( 너무 많은 epoch는 오버핏이 될 수 있다.) 일일이 직접 모니터 하지 않아도, epoch마다 성능이 올라가면 자동으로 저장해주는 ModelCheckpoint가 있다. from tensorflow.keras.callbacks import ModelCheckpoint cp = ModelCheckpoint(filepath=CHECKPOINT_PATH, monitor='val_accuracy', save_best_only = True, verbose = 1) 라이브러리 적용 후 ModelCheckpoint를 설정한다. filepath : 저장할 경로, 위에서는 경로가 변수로 저장되어 있어 변수로 쓰였다. monitor : 어떤걸 보고 저장할 것인가. 난.. 2021. 3. 4.
Fine Tuning 코드 진행 Fine Tuning은 트랜스퍼러닝을 한 후에 조금 더 성능을 향상 시키고자 할 때 한다. 기존 모델을 실시한 후에 실시하는것이 핵심! basemodel 전체를 훈련시키는 것이 아닌 앞부분은 놔두고, 뒷부분을 설정해서 설정한 구간부터 끝까지 훈련을 실행한다. len( baseModel.layers ) start_layer = 120 baseModel.trainable=True for layer in baseModel.layers[ 0:start_layer ] : layer.trainable = False model.compile(optimizer=Adam( lr=0.0001 ), loss='categorical_crossentropy', metrics='accuracy') model.fit(trainGe.. 2021. 3. 4.
Transfer Learning을 위한 코드와 설명 Transfer Learning은 기존에 잘 훈련되어 있는 모델을 base부분만 가져와 head부분은 따로 만들어서 이용 하는 것이다. 잘 만들어진 모델을 사용하여 새로운 모델을 만들시 학습을 빠르게 하며, 예측을 더 높일 수 있다. 모델을 가져올시 내가 지금 하려는 문제해결 방법과 유사한 문제해결 모델인지 확인해야 한다. keras에서 모델을 불러와 base_model로 . ex)MobileNetV2 base_model = tf.keras.applications.MobileNetV2(input_shape=IMG_SHAPE, include_top=False, weights="imagenet") IMG_SHAPE( 128, 128, 3)으로 처리 되어있다. include_top = False : 가져오는 .. 2021. 3. 4.
CNN으로 이미지 파일 시험코드 코랩 환경. 다 만들어진 CNN 모델이 얼마나 잘 맞나 테스트를 위해, 내 컴퓨터에 있는 이미지 파일로 시험해본다. import numpy as np from google.colab import files from tensorflow.keras.preprocessing import image uploaded = files.upload() for fn in uploaded.keys() : path = '/content/'+ fn img = image.load_img( path, target_size=( 300, 300) ) x = image.img_to_array(img) print(x.shape) x=np.expand_dims( x, axis = 0 ) print(x.shape) images = np.v.. 2021. 3. 3.
728x90