Validation 卷积神经网络:在测试阶段防止作弊
我正在建立一个用于图像分类的卷积神经网络。图像存储在两个不同的文件夹中:Validation 卷积神经网络:在测试阶段防止作弊,validation,testing,keras,conv-neural-network,Validation,Testing,Keras,Conv Neural Network,我正在建立一个用于图像分类的卷积神经网络。图像存储在两个不同的文件夹中: 培训图像(8000个文件) 测试图像(2000个文件) 显然,我需要一个训练集、一个验证集和一个测试集。第一种解决方案是将第一个文件夹中的图像拆分为培训组和验证组,同时使用第二个文件夹中的图像进行测试: training_datagen = ImageDataGenerator(rescale = 1./255, validation_split = 0.2) test_datagen = Ima
training_datagen = ImageDataGenerator(rescale = 1./255, validation_split = 0.2)
test_datagen = ImageDataGenerator(rescale = 1./255)
train_generator = train_datagen.flow_from_directory(training_path,target_size = (150,150), batch_size = 20, subset = "training", class_mode = "binary")
validation_generator = train_datagen.flow_from_directory(training_path,target_size = (150,150), batch_size = 20, subset = "validation", class_mode = "binary")
test_generator = test_datagen.flow_from_directory(test_path,target_size = (150,150), batch_size = 20, class_mode = "binary")
当我想增强训练图像时,这种方法会出现问题,因为拉伸、缩放等操作也会应用于我的验证集。实际上,可以简单地将第一个文件夹拆分为两个单独的文件夹(例如,6000个图像用于培训,2000个图像用于验证),并对每个文件夹使用ImageDataGenerator(),而不使用“validation_split”参数。但是,我不允许修改文件夹结构,也就是说,我不能重新组织图像。我的想法是将第二个文件夹中的2000个图像分割为验证集和测试集:
train_datagen = ImageDataGenerator(rescale = 1./255,
rotation_range = rotation_range,
width_shift_range = width_shift_range,
height_shift_range = height_shift_range,
shear_range = shear_range,
brightness_range = brightness_range,
zoom_range = zoom_range,
horizontal_flip = horizontal_flip,
fill_mode = fill_mode)
test_datagen = ImageDataGenerator(rescale = 1./255, validation_split = 0.5)
train_generator = train_datagen.flow_from_directory(training_path,target_size = (150,150), batch_size = 20, subset = "training", class_mode = "binary")
validation_generator = test_datagen.flow_from_directory(test_path,target_size = (150,150), batch_size = 20, subset = "test", class_mode = "binary")
test_generator = test_datagen.flow_from_directory(test_path,target_size = (150,150), batch_size = 20, subset = "validation",class_mode = "binary")
并使用前1000个图像进行验证,剩余1000个图像进行测试。我这样做是不是在考试阶段作弊
谢谢大家!