실습 | 전이 학습 실습하기
from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras import Input, models, layers, optimizers, metrics from tensorflow.keras.layers import Dense, Flatten, Activation, Dropout from tensorflow.keras.applications import VGG16 from tensorflow.keras.callbacks import EarlyStopping import numpy as np import matplotlib.pyplot as plt # 깃허브에 준비된 데이터를 가져옵니다. !git clone https://github.com/taehojo/data-ch20.git # 학습셋의 변형을 설정하는 부분입니다. = ImageDataGenerator( =1./255, = , =0.1, =0.1, ) = .flow_from_directory( './data-ch20/train', =(150,150), =5, ='binary') # 테스트셋의 정규화를 설정합니다. = ImageDataGenerator( =1./255) = .flow_from_directory( './data-ch20/test', =(150,150), =5, ='binary') # VGG16 모델을 불러옵니다. = VGG16( ='imagenet', = , =(150,150,3)) .trainable = # 우리의 모델을 설정합니다. = models.Sequential() .add( ) .add(Flatten()) .add(Dense(64)) .add(Activation('relu')) .add(Dropout(0.5)) .add(Dense(1)) .add(Activation('sigmoid')) .summary() # 모델의 실행 옵션을 설정합니다. .compile( ='binary_crossentropy', =optimizers.Adam( =0.0002), =['accuracy']) # 학습의 조기 중단을 설정합니다. = EarlyStopping( ='val_loss', =5) # 모델을 실행합니다. = .fit( , =20, = , =10, =[ ]) # 검증셋과 학습셋의 오차를 저장합니다. = .history['val_loss'] = .history['loss'] # 그래프로 표현해 봅니다. = np.arange(len( )) plt.plot( , , ='.', ="red", ='Testset_loss') plt.plot( , , ='.', ="blue", ='Trainset_loss') # 그래프에 그리드를 주고 레이블을 표시하겠습니다. plt.legend( ='upper right') plt.grid() plt.xlabel('epoch') plt.ylabel('loss') plt.show()