Модель CNN дает точность 0f 90% для проверочных изображений, но при прогнозировании на том же наборе проверки точность едва ли составляет 5% - PullRequest
0 голосов
/ 21 сентября 2019

Я новичок в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...