四. 数据集加载与加强

四. 数据集加载与加强 摘要使用tensorflow框架加载提前准备好的动物分类图片设置数据加强参数数据集的类型训练集核心作用‌模型直接从中学习特征与规律是获取知识、建立参数的基础类比于教材占比‌通常占总数据的50%~80%数据量最大。使用方式‌训练过程中模型通过前向传播、反向传播迭代更新权重反复拟合数据中的模式。‌质量要求‌需具备代表性、准确性、多样性覆盖问题空间的各类场景。‌验证集核心作用‌作为模型调优的“指南针”用于在训练过程中评估性能、指导超参数调整类比于课后作业占比‌通常占总数据的10%~25%。使用方式‌不参与权重更新仅用于验证当前模型在未见数据上的表现据此调整学习率、正则化强度等超参数也可用于实现早停策略防止过拟合。注意事项‌不能作为最终评估依据否则会导致评估结果偏向验证集分布。测试集‌核心作用‌给出模型泛化能力的最终无偏评估相当于模型的“期末考试”。占比‌通常占总数据的10%~25%。使用方式‌在模型完全训练、调优完成后才使用全程不参与任何训练和调参过程。关键原则‌测试集数据在训练阶段必须对模型完全“不可见”否则会造成评估作弊无法反映真实的线上性能。数据集加载train.py内容importtensorflowastffromtensorflow.keras.preprocessing.imageimportImageDataGeneratorimportconfigascfg# 数据增强datagenImageDataGenerator(rescalecfg.rescale,# 像素归一化rotation_rangecfg.rotation_range,# 随机旋转角度范围width_shift_rangecfg.width_shift_range,# 随机水平平移范围height_shift_rangecfg.height_shift_range,# 随机垂直平移范围zoom_rangecfg.zoom_range,# 随机缩放范围shear_rangecfg.shear_range,# 随机错切变换范围brightness_rangecfg.brightness_range,# 随机亮度调整范围vertical_flipcfg.vertical_flip,# 随机垂直翻转horizontal_flipcfg.horizontal_flip,# 随机水平翻转fill_modecfg.fill_mode,# 填充模式nearest表示使用最近邻像素填充validation_splitcfg.validation_split)# 数据集加载train_generatordatagen.flow_from_directory(cfg.data_path,# 数据集目录target_sizecfg.image_size,# 加载图片后将图片调整为指定的大小batch_sizecfg.batch_size,# 每个批次的样本数量。批次大小会影响训练速度和模型性能。subsettraining,# 指定为训练集shuffleTrue,# 是否在每个 epoch 开始前打乱数据集class_modecategorical,# 这里有多个动物类型指定标签的类型为多类别分类 categorical-多类别标签binary-二分类标签sparse-一维整数标签input-与输入图像相同的图像数据作为标签None‌-无标签seedcfg.seed)val_generatordatagen.flow_from_directory(cfg.data_path,# 数据集目录target_sizecfg.image_size,# 加载图片后将图片调整为指定的大小batch_sizecfg.batch_size,# 每个批次的样本数量。批次大小会影响训练速度和模型性能。subsetvalidation,# 指定为验证集class_modecategorical,# 这里有多个动物类型指定标签的类型为多类别分类 categorical-多类别标签binary-二分类标签sparse-一维整数标签input-与输入图像相同的图像数据作为标签None‌-无标签shuffleFalse,# 是否在每个 epoch 开始前打乱数据集seedcfg.seed)config.py# 数据集data_path# 数据集目录image_size(456,456)# 加载图片后将图片调整为指定的大小batch_size12# 每个批次的样本数量。批次大小会影响训练速度和模型性能。seed42# 随机种子。用于确保在 shuffleTrue 或 validation_split 划分时结果的可复现性。‌重要‌如果在划分训练集和验证集时使用了 seed两次调用必须使用相同的 seed 以保证数据不重叠且划分一致。# 数据增强rescale1./255# 像素归一化rotation_range30# 随机旋转角度范围width_shift_range0.2# 随机水平平移范围height_shift_range0.2# 随机垂直平移范围zoom_range0.2# 随机缩放范围shear_range0.2# 随机错切变换范围brightness_range(0.8,1.2)# 随机亮度调整范围vertical_flipTrue# 是否进行垂直翻转horizontal_flipTrue# 是否进行水平翻转fill_modenearest# 填充模式nearest表示使用最近邻像素填充validation_split0.2# 预留一部分作为验证集总结1.数据集更像是数据读取器根据配置的参数在每轮次训练中获取相应的数据。2.数据增强的作用是在原有的数据基础之上进行扩展增强比如这里的将原图片随机旋转、移动、翻转之后形成一张新的图片使数据源的数量增加提高识别准确性。源码路径https://github.com/Shenzhangqiang/-AI-