所以我已经先验地分离了训练集、验证集和测试集(这就是数据的来源)。
我为他们每个人都准备了这样的文件夹:
测试
Class1
Class0
字符串
瓦尔
Class1
Class0
型
火车
Class1
Class0
型
然后我定义了如下路径:
# Define paths
train_dir = os.path.join(PATH, 'train')
val_dir = os.path.join(PATH, 'val')
test_dir = os.path.join(PATH, 'test')
# Specify them by class
train_safe_dir = os.path.join(train_dir, 'class1')
train_malicious_dir = os.path.join(train_dir, 'class0')
val_safe_dir = os.path.join(val_dir, 'class1')
val_malicious_dir = os.path.join(val_dir, 'class0')
test_safe_dir = os.path.join(test_dir, 'class1')
test_malicious_dir = os.path.join(test_dir, 'class0')
型
然后我使用ImageDataGenerator如下:
train_datagen = ImageDataGenerator(rescale=1./255)
val_datagen = ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(batch_size=batch_size,
directory=train_dir,
shuffle=False,
target_size=(IMG_H, IMG_W),
class_mode='binary')
val_generator = val_datagen.flow_from_directory(batch_size=batch_size,
directory=val_dir,
target_size=(IMG_H, IMG_W),
class_mode='binary')
test_generator = test_datagen.flow_from_directory(batch_size=batch_size,
directory=test_dir,
shuffle=False,
target_size=(IMG_H, IMG_W),
class_mode='binary')
型
当我想对测试数据进行评估时,这是否正确?我是否在某种程度上做了数据泄漏?如果不正确,如何正确科普测试数据?非常感谢!
我不确定我是否应该有一个文件夹与测试数据没有类分离,但当我尝试,我得到了一个非常低的准确性,没有意义。任何建议是赞赏!
results = CNN.evaluate(test_generator, batch_size=64)
型
1条答案
按热度按时间o3imoua41#
实际上,你的代码有一些问题。
1)首先,下面的行
字符串
没有用。你可能想把它们从代码中删除。它们是多余的。
2)其次,您必须为测试和验证数据组织测试数据文件夹,就像训练数据一样。请记住,当您有表格数据时。为了评估测试数据,您会放弃测试数据的输出标签吗?目录中的文件夹扮演类标签的角色。
3)第三,你的低准确率源于你没有对训练数据集做任何图像增强。所以,你的模型过度拟合训练数据也就不足为奇了。
幸运的是,您不会将训练数据中的任何信息泄露给验证和测试数据。