Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4520
  • 博文数量: 15
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 161
  • 用 户 组: 普通用户
  • 注册时间: 2022-07-06 14:11
文章分类
文章存档

2022年(15)

我的朋友
最近访客

分类: 信息化

2022-07-19 12:20:38

图3.7 Python可以很容易地将数据调整成需要的格式。请先快速浏览一下代码,然后,我们将讲述重要的部分。 上述代码所做的处理,就是获取所有图片文件,并挑选出2,000张用于创建验证数据集。它把图片划分到了cats和dogs这两个类别目录中。创建独立的验证集是通用的重要实践,因为在相同的用于训练的数据集上测试算法并不合理。为了创建validation数据集,我们创建了一个图片数量长度范围内的数字列表,并把图像无序排列。在创建validation数据集时,我们可使用无序排列的数据来挑选一组图像。让我们详细解释一下每段代码。 下面的代码用于创建文件: glob方法返回特定路径的所有文件。当图片数量巨大时,也可以使用iglob,它返回一个迭代器,而不是将文件名载入到内存中。在我们的例子中,只有25,000个文件名,可以很容易加载到内存里。 可以使用下面的代码混合排列文件: 上述代码返回25,000个0~25,000范围内的无序排列的数字,可以把其作为选择图片子集的索引,用于创建validation数据集。 可以创建验证代码,如下所示: 上述代码创建了validation文件夹,并在train和valid目录里创建了对应的类别文件夹(cats和dogs)。 可以用下面的代码对索引进行无序排列: 在上面的代码中,我们使用无序排列后的索引随机抽出2000张不同的图片作为验证集。同样地,我们把训练数据用到的图片划分到train目录。 现在已经得到了需要格式的数据,我们来快速看一下如何把图片加载成PyTorch张量。 1.把数据加载到PyTorch张量 PyTorch的torchvision.datasets包提供了一个名为ImageFolder的工具类,当数据以前面提到的格式呈现时,它可以用于加载图片以及相应的标签。通常需要进行下面的预处理步骤。 1.把所有图片转换成同等大小。大多数深度学习架构都期望图片具有相同的尺寸。 2.用数据集的均值和标准差把数据集归一化。 3.把图片数据集转换成PyTorch张量。 PyTorch在transforms模块中提供了很多工具函数,从而简化了这些预处理步骤。例如,进行如下3种变换: ?调整成256 ×256大小的图片; ?转换成PyTorch张量; ?归一化数据(第5章将探讨如何获得均值和标准差)。 下面的代码演示了如何使用ImageFolder类进行变换和加载图片: train对象为数据集保留了所有的图片和相应的标签。它包含两个重要属性:一个给出了类别和相应数据集索引的映射;另一个给出了类别列表。 把加载到张量中的数据可视化往往是一个最佳实践。为了可视化张量,必须对张量再次变形并将值反归一化。下面的函数实现了这样的功能: 现在,可以把张量传入前面的imshow函数,将张量转换成图片: 上述代码生成的输出如图3.8所示。
阅读(245) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~