Functional, Sequential API를 각각 활용해 Conv2D, MaxPool2D, BatchNormalization, Dropout 등 다양한 레이어를 연결하며 모델링을 진행하였다.
MNIST, Fashion MNIST, CIFAR-10 다중분류 문제를 풀며, 기존 Fully Connected 신경망 대비 이미지 분류 문제에서 CNN 모델의 강력함을 직접 확인하였다.
ImageDataGenerator는 곧 deprecated 될 예정이다. ImageDataGenerator 대신 keras layers 내부에서 이를 처리할 수 있도록 바뀌고 있다. 자세한 것은 공식문서를 참고하자.
tf.keras.preprocessing.image.ImageDataGenerator(
featurewise_center=False,
samplewise_center=False,
featurewise_std_normalization=False,
samplewise_std_normalization=False,
zca_whitening=False,
zca_epsilon=1e-06,
rotation_range=0,
width_shift_range=0.0,
height_shift_range=0.0,
brightness_range=None,
shear_range=0.0,
zoom_range=0.0,
channel_shift_range=0.0,
fill_mode='nearest',
cval=0.0,
horizontal_flip=False,
vertical_flip=False,
rescale=None,
preprocessing_function=None,
data_format=None,
validation_split=0.0,
interpolation_order=1,
dtype=None
)
aug = ImageDataGenerator( ... )
aug.fit(x_train)
flow(
x,
y=None,
batch_size=32,
shuffle=True,
sample_weight=None,
seed=None,
save_to_dir=None,
save_prefix='',
save_format='png',
ignore_class_split=False,
subset=None
)
datagen = aug.flow(x_train, y_train, batch_size=128)
- BatchNormalization layer와 Dropout layer는 어느 레이어 사이에 위치하는 것이 모델 성능에 가장 잘 기여할까?
- 이번 실습의 경우 Augemetation을 한 후에 오히려 모델 성능이 대폭 감소하는 모습을 보였다. 이는 왜그런걸까? Augmentation 과정에 실수가 있었나?
-> Kaggle, Github 등에서 Augmentation 예제를 공부해보자.