원래 만들었던 CNN 구조
super(AcousticSoundModel, self).__init__()
self.conv1 = Conv2D(filters=64, kernel_size=[3, 3], padding='SAME', activation=tf.nn.relu)
self.drop1 = Dropout(rate=0.2)
self.pool1 = MaxPool2D(padding='SAME')
self.conv2 = Conv2D(filters=64, kernel_size=[3, 3], padding='SAME', activation=tf.nn.relu)
self.drop2 = Dropout(rate=0.2) #20% dropout
self.pool2 = MaxPool2D(padding='SAME')
self.conv3 = Conv2D(filters=64, kernel_size=[3, 3], padding='SAME', activation=tf.nn.relu)
self.drop3 = Dropout(rate=0.2) #20% dropout
self.pool3 = MaxPool2D(padding='SAME')
self.pool3_flat = keras.layers.Flatten()
self.dense4 = Dense(units=128, activation=tf.nn.relu)
self.dense5 = Dense(units=3, activation=tf.nn.sigmoid)
resnet으로 바꿔보겠음 ~,~ 공식 문서를 보면서 해보겠음!
우선 ResNet을 import 해준다
from keras.applications import ResNet50
resnet50은 이렇게 생겼다.
tf.keras.applications.ResNet50(
include_top=True, weights='imagenet', input_tensor=None, input_shape=None,
pooling=None, classes=1000, **kwargs
)
파라메터 설명을 보는데,
width and height should be no smaller than 32
아,,, 우리 이미지 사이즈 32,,,,
일단 해봤다.
model = ResNet50(include_top=True, weights='imagenet', input_shape=(32, 32, 3), pooling=max, classes=3)
에러났다.
weights
로 imagenet
을 쓰려면 classes
가 1000이어야 한다고 해서 weights=None
으로 설정했다.
model = ResNet50(include_top=True, weights=None, input_shape=(32, 32, 3), pooling=max, classes=3)
이제 학습 돌려보기!
model.compile(loss='categorical_crossentropy', metrics=['accuracy'], optimizer='adam')
model.fit(train_images, train_labels, batch_size=64, epochs=10, validation_data=(valid_images, valid_labels))
저번보다 아주아주 조금 괜찮아졌다.
이제 조금 업그레이드 해보겠다 ~,~
early stopping, model checkpoint를 넣어보자
es = tf.keras.callbacks.EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=10)
save = tf.keras.callbacks.ModelCheckpoint('best_model.h5', monitor='val_loss', mode='min', save_best_only=True)
callback = [es, save]
그리고 100 epoch 동안 실행해서 early stopping이 잘 실행되는지 확인해보겠음
hist = model.fit(train_images, train_labels, batch_size=64, epochs=100, validation_data=(valid_images, valid_labels), callbacks=callback)
13 에포크에서 early stopping이 된 걸 확인!
테스트 해보니
오 정확도 0.6으로 올랐네
이제 이미지 사이즈를 (256, 256)로 해보겠다!
주피터로 하니까 노트북이 죽으려고 해서 AWS로 가서 해보겠음,,
댓글