Я в настоящее время разрабатываю CNN для мультиклассификации (3 класса), но у меня нет большого количества данных (у каждого класса есть 100 изображений). Я разделил данные на 70% обучения, 30% проверки (всего 210 данных обучения, 90 данных проверки). Я опробовал ImageDataGenerator, чтобы увеличить тренировочные данные. В конце концов, я все еще получаю низкую точность проверки (0,30). Любое предложение, которое может повысить точность проверки? Если вам нужно больше данных для проверки, сколько данных для проверки вы бы порекомендовали?
train_datagen = ImageDataGenerator(rescale=1. / 255, zoom_range=0.3, rotation_range=50,
width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2,
horizontal_flip=True, fill_mode='nearest')
val_datagen = ImageDataGenerator()
train_generator = train_datagen.flow(X_train, to_categorical(y_train), batch_size=16)
val_generator = val_datagen.flow(X_test, to_categorical(y_test), batch_size=16)
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same', input_shape=X_train.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(3, activation='softmax'))
augmented_checkpoint = ModelCheckpoint('CNN model/best model/best_model.h5',
monitor='val_loss',
verbose=0,
save_best_only=True,
mode='auto')
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
history = model.fit_generator(train_generator,
steps_per_epoch=len(X_train) // 16,
epochs=20,
validation_data=val_generator,
validation_steps=len(X_test) // 16,
callbacks=[augmented_checkpoint, tensorboard], verbose=1)