코드 6-9 모델 생성
num_classes = 2 ------ 개와 고양이 두 가지에 대해 분류
class AlexNet(Sequential):
def __init__(self, input_shape, num_classes):
super().__init__()
self.add(Conv2D(96, kernel_size=(11,11), strides= 4,
padding='valid', activation='relu',
input_shape=input_shape,
kernel_initializer='he_normal')) ------ ①
self.add(MaxPooling2D(pool_size=(3,3), strides=(2,2),
padding='valid', data_format='channels_last')) ------ ②
self.add(Conv2D(256, kernel_size=(5,5), strides=1,
padding='same', activation='relu',
kernel_initializer='he_normal'))
self.add(MaxPooling2D(pool_size=(3,3), strides=(2,2),
padding='valid', data_format='channels_last'))
self.add(Conv2D(384, kernel_size=(3,3), strides=1,
padding='same', activation='relu',
kernel_initializer='he_normal'))
self.add(Conv2D(384, kernel_size=(3,3), strides=1,
padding='same', activation='relu',
kernel_initializer='he_normal'))
self.add(Conv2D(256, kernel_size=(3,3), strides=1,
padding='same', activation='relu',
kernel_initializer='he_normal'))
self.add(MaxPooling2D(pool_size=(3,3), strides=(2,2),
padding='valid', data_format='channels_last'))
self.add(Flatten())
self.add(Dense(4096, activation='relu'))
self.add(Dense(4096, activation='relu'))
self.add(Dense(1000, activation='relu'))
self.add(Dense(num_classes, activation='softmax'))
self.compile(optimizer=tf.keras.optimizers.Adam(0.001),
loss='categorical_crossentropy',
metrics=['accuracy'])