Я новичок в CNN.Я внедрял CNN для классификации набора данных с 18000 обучающих изображений и 10 000 тестовых изображений в 102 выходных класса.Я использую трансферное обучение, и я вижу, что точность обучения составляет около 98%, а точность проверки - около 97%.Но когда я прогнозирую тот же набор данных проверки, я едва ли получаю 5% точности.Я пробовал регуляризацию L1 / L2 в плотных слоях, что выглядит как переобучение.Я пытался выпадать, но не смог получить больше точности, чем 5-6% на самом наборе данных проверки.Нужны некоторые предложения и вклад здесь.Набор данных для проверки Я создал набор данных для поезда путем случайного выбора 50 изображений каждого из 102 классов, поэтому набор данных для проверки содержит около 5000 изображений.Ниже приведен код
from keras.applications.mobilenet import preprocess_input
base_model=MobileNet(weights='imagenet',include_top=False)
x=base_model.output
x=GlobalAveragePooling2D()(x)
x=Dense(1024,kernel_regularizer=regularizers.l2(0.3),activation='relu')(x)
x=Dense(1024,kernel_regularizer=regularizers.l2(0.3), activation='relu')(x)
preds=Dense(102,activation='softmax')(x)
model=Model(inputs=base_model.input,outputs=preds)
for layer in model.layers[:44]:
layer.trainable=False
for layer in model.layers[44:]:
layer.trainable=True
train_datagen=ImageDataGenerator(preprocessing_function=preprocess_input)
train_generator=train_datagen.flow_from_directory('./train',
target_size=(224,224),
color_mode='rgb',
batch_size=32,
class_mode='categorical',
shuffle=True)
validation_datagen=ImageDataGenerator(preprocessing_function=preprocess_input)
validation_generator=validation_datagen.flow_from_directory('./Validation',
target_size=(224,224),
color_mode='rgb',
batch_size=32,
class_mode='categorical',
shuffle=True)
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])
step_size_train=train_generator.n//train_generator.batch_size
MobileNet=model.fit_generator(generator=train_generator,
steps_per_epoch=step_size_train,
validation_data=validation_generator,
validation_steps=validation_generator.n // validation_generator.batch_size,
epochs=30)