AlexNet은 파라미터를 6000만 개 사용하는데, 이때 충분한 데이터가 없으면 과적합이 발생합니다. 하지만 예제는 충분한 규모의 데이터가 아니므로 작은 데이터셋을 사용하여 강력한 성능을 낼 수 있는 전처리가 필요합니다.
여기에서는 앞서 사용했던 ImageDataGenerator를 사용합니다.
코드 6-11 데이터 호출 및 데이터셋 전처리(증가)
EPOCHS = 100
BATCH_SIZE = 32
image_height = 100
image_width = 100
train_dir = "../chap6/data/catanddog/train/"
valid_dir = "../chap6/data/catanddog/validation/"
train = ImageDataGenerator(
rescale=1./255,
rotation_range=10,
width_shift_range=0.1,
height_shift_range=0.1,
shear_range=0.1,
zoom_range=0.1)
train_generator = train.flow_from_directory(train_dir,
target_size=(image_height, image_width),
color_mode="rgb",
batch_size=BATCH_SIZE,
seed=1,
shuffle=True,
class_mode="categorical")
valid = ImageDataGenerator(rescale=1.0/255.0)
valid_generator = valid.flow_from_directory(valid_dir,
target_size=(image_height, image_width),
color_mode="rgb",
batch_size=BATCH_SIZE,
seed=7,
shuffle=True,
class_mode="categorical")
train_num = train_generator.samples
valid_num = valid_generator.samples