В настоящее время я передаю обучение, используя архитектуру MobilenetV2. Перед классификацией я добавил несколько плотных слоев сверху. Должен ли я добавить BatchNormalization
между этими слоями?
base_model = MobileNetV2(weights='imagenet', include_top=False, input_shape=(200,200,3))
x = base_model.output
x = GlobalAveragePooling2D(name="Class_pool")(x)
x = Dense(512, activation='relu')(x)
x = BatchNormalization()(x)
x = Dropout(.4)(x)
x = Dense(1024, activation='relu')(x)
x = BatchNormalization()(x)
x = Dropout(.4)(x)
x = Dense(512, activation='relu')(x)
x = BatchNormalization()(x)
x = Dropout(.4)(x)
x = Dense(512, activation='relu')(x)
x = BatchNormalization()(x)
X = Dense(20,activation='softmax')(x)
Ранее я обучал эту сеть без какого-либо из этих слоев пакетной нормализации и изо всех сил пытался получить хорошую точность. Я добился лишь полууспешных результатов, попробовав множество комбинаций скорости обучения и замороженных слоев. Я надеюсь, что это поможет. Может ли слишком много слоев BatchNormalization
быть плохим для сети?