如何从训练数据中提取验证数据?(TensorFlow代码场景)
分离验证数据集的简单方法
嘿,我来帮你搞定这个验证数据分离的问题!你已经用tf.keras.preprocessing.image_dataset_from_directory加载了训练集,要得到对应的验证集其实只需要再调用一次这个函数,关键是要保证几个核心参数和训练集完全一致,这样才能正确拆分出不重叠的验证数据。
具体实现步骤
首先,你现有的训练集加载代码是这样的:
self.__Dir_Data = tf.keras.preprocessing.image_dataset_from_directory( self.__Dir_Path, validation_split=0.1, subset="training", seed=1, labels='inferred', label_mode='int', batch_size=32, image_size=(124, 124) )
要加载对应的验证集,只需要复制这段代码,把subset参数改成"validation",同时确保validation_split、seed、labels、label_mode、batch_size、image_size这些参数和训练集完全相同:
self.__Dir_Val = tf.keras.preprocessing.image_dataset_from_directory( self.__Dir_Path, validation_split=0.1, subset="validation", seed=1, # 必须和训练集的seed一致,才能保证拆分后数据集无重叠 labels='inferred', label_mode='int', batch_size=32, image_size=(124, 124) )
这么做的核心原因
- TensorFlow会根据
validation_split=0.1自动把原始数据按9:1的比例拆分,10%作为验证集,90%作为训练集 - 相同的
seed参数能确保两次加载的数据集完全不重叠,避免训练时用到验证数据导致的数据泄露问题 - 保持其他参数一致,能保证验证集和训练集的预处理逻辑(图像尺寸、标签格式、批次大小)完全匹配,后续模型评估的结果才准确
这样你就得到了独立的训练集self.__Dir_Data和验证集self.__Dir_Val,可以直接用在模型的fit方法里做训练和验证啦!
内容的提问来源于stack exchange,提问作者Damian Andrysiak
相关产品推荐
相关产品推荐

