PyTorch - 15 - PyTorch数据集和数据加载器 - 深度学习和AI的训练集探索
- PyTorch Datasets And DataLoaders For Deep Learning
- PyTorch Dataset: Working With The Training Set
- Exploring The Data
- Class Imbalance: Balanced And Unbalanced Datasets
- Accessing Data In The Training Set
- PyTorch DataLoader: Working With Batches Of Data
- How To Plot Images Using PyTorch DataLoader
- Building The Model Is Next
PyTorch Datasets And DataLoaders For Deep Learning
从高角度来看,我们仍处于深度学习项目的准备数据阶段。
准备数据
建立模型
训练模型
分析模型的结果
在这篇文章中,我们将看到如何使用在上一篇文章中创建的数据集和数据加载器对象。 请记住,在上一篇文章中,我们有两个PyTorch对象,一个数据集
和一个DataLoader
。
1.train_set
2.train_loader
现在,我们准备看看如何使用这些对象,让我们开始吧。
PyTorch Dataset: Working With The Training Set
让我们先来看一些我们可以执行的操作,以更好地了解我们的数据。
Exploring The Data
要查看训练集中有多少张图片,我们可以使用Pythonlen()
函数检查数据集的长度:
> len(train_set)
60000
根据我们在Fashion-MNIST数据集上的帖子中学到的知识,这个60000
的数字是有意义的。 假设我们要查看每个图像的标签。 可以这样完成:
> train_set.targets
tensor([9, 0, 0, ..., 3, 0, 5])
第一个图像是9
,接下来的两个是零。 请记住,过去的帖子中,这些值编码实际的类名称或标签。 例如,9
是踝靴
,而0
是T恤
。
如果要查看数据集中每个标签有多少个,可以使用PyTorch bincount()
函数,如下所示:
> train_set.targets.bincount()
tensor([6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000])
Class Imbalance: Balanced And Unbalanced Datasets
这向我们显示,Fashion-MNIST数据集在每个类别中的样本数量方面是统一的。 这意味着我们每个班级都有6000个样本。 结果,该数据集被认为是平衡的。 如果类的样本数量不同,我们将其称为不平衡数据集。
类不平衡是一个常见问题,但是在我们的案例中,我们刚刚看到Fashion-MNIST数据集确实是平衡的,因此我们不必为项目担心。
要了解有关减轻深度学习中不平衡数据集的方法的更多信息,请参阅本文:卷积神经网络中类不平衡问题的系统研究。
Accessing Data In The Training Set
要访问训练集中的单个元素,我们首先将train_set对象传递给Python的iter()
内置函数,该函数会返回一个代表数据流的对象。
对于数据流,我们可以使用Python内置的next()
函数来获取数据流中的下一个数据元素。我们希望由此得到一个样本,因此我们将相应地命名结果:
> sample = next(iter(train_set))
> len(sample)
2
将样本传递给len()
函数后,我们可以看到样本包含两个项目,这是因为数据集包含图像标签对。我们从训练集中检索的每个样本都包含图像数据作为张量和相应的标签作为张量。
由于样本是序列类型,因此我们可以使用序列拆包来分配图像和标签。现在,我们将检查图像和标签的类型,看看它们都是Torch.Tensor
对象: