PyTorch教程:数据集划分与Dataloader应用实例

3 下载量 63 浏览量 更新于2024-08-30 收藏 82KB PDF 举报
在PyTorch学习笔记的第五部分,我们关注的是数据加载器(Dataloader)和数据集(Dataset)在实际项目中的应用,以人民币识别为例。这部分主要介绍了如何对原始数据进行划分,以便于模型训练、验证和测试。首先,作者引入了`split_dataset`函数,用于将数据集按照预定义的比例(如80%用于训练,10%用于验证,10%用于测试)进行分割。 在代码中,定义了一个`makedir`函数来创建新的目录,如果目录不存在的话。`dataset_dir`和`split_dir`分别指向存放原始人民币图像数据和分割后的子目录。`train_dir`、`valid_dir`和`test_dir`分别对应训练集、验证集和测试集。通过`os.walk`遍历`dataset_dir`下的所有子目录,并获取每个子目录下的图像文件。这里使用`lambdax:x.endswith('.jpg')`过滤出只包含.jpg格式的图片。 接下来,通过`random.shuffle(imgs)`随机打乱图片的顺序,确保数据分布的随机性。然后根据训练集、验证集和测试集的比例计算出相应的分割点。根据图片索引`i`的值,将图片移动到对应的输出目录:若`i`小于训练点,则放入训练集;若在训练集和验证集之间,则放入验证集;否则放入测试集。 最后,`makedir(out_dir)`确保目标输出目录存在后,将图片从原位置移动到新的目录,并保存图片的完整路径`target_path`,同时将图片复制到指定的子目录下。 通过这个过程,我们可以看到如何利用PyTorch的`Dataset`接口自定义数据处理逻辑,以及`DataLoader`如何从这些预处理过的数据集中高效地加载小批量数据,以供深度学习模型进行训练和评估。这对于理解和实现一个完整的机器学习流程至关重要,特别是对于计算机视觉任务,如图像分类和识别。理解并灵活运用这些基础工具能极大地提升开发效率和模型性能。