第一章 Python深度学习入门之环境软件配置
第二章 Python深度学习入门之数据处理Dataset的使用
第三章 数据可视化TensorBoard和TochVision的使用
第四章 UNet-Family中Unet、Unet++和Unet3+的简介
面对大数据时代,数据处理的能力尤为重要,深度学习换句话可以被称作是学习数据,因为大部分深度学习模型需要大量的数据来训练,数据量越大训练出来的模型也就越精准。由此可见数据在深度学习中的地位了,本文我们就学习一下如何处理数据。
在Pytorch中有两个包用来做数据处理非常合适,就是DataSet和DataLoad。这两个包的作用可以用下面这张图片展示出来。
蚂蚁和蜜蜂图像数据集下载地址:https://download.pytorch.org/tutorial/hymenoptera_data.zip
通过以上链接我们可以下载到接下来我们要用到的蚂蚁和蜜蜂数据集。
在学习DataSet之前我们需要学习一个对文件操作的包,即python的os包。这是一个对系统文件操作的包,因为我们要经常对数据进行操作,数据集又放在文件夹里,所以这个包是非常重要的。
os包里面的内容十分丰富,在这里我只说一下常用的和接下来我们需要使用的一些方法。
import os
current_path = os.getcwd()
print(current_path)
import os
root_dir = "C:/"
list_dir = os.listdir(root_dir)
print(list_dir)
通过查看源码我们可以知道Dataset类是一个抽象类,因此根据面向对象的概念,我们需要继承抽象类并重写抽象类里面的抽象方法。
对于Dataset中的抽象方法中,我们这边主要是重写__getitem__方法。其中index是数据的下标,通过下标来访问具体的项。
需要解决的问题:
from torch.utils.data import Dataset
from PIL import Image
import os
class MyData(Dataset):
def __init__(self, root_dir, label_dir):
self.root_dir = root_dir
self.label_dir = label_dir
self.path = os.path.join(self.root_dir, self.label_dir)
self.image_path = os.listdir(self.path)
def __getitem__(self, item):
image_name = self.image_path[item]
image_item_path = os.path.join(self.root_dir, self.label_dir, image_name)
image = Image.open(image_item_path)
label = self.label_dir
return image, label
def __len__(self):
return len(self.image_path)
if __name__ == '__main__':
root_dir = 'H:\\learn\\hymenoptera_data\\train'
ants_label_dir = 'ants'
bees_label_dir = 'bees'
ants_dataset = MyData(root_dir=root_dir, label_dir=ants_label_dir)
bees_dataset = MyData(root_dir=root_dir, label_dir=bees_label_dir)
img, label = bees_dataset[0]
print(img)
img.show()
print(label)
运行之后代码之后,会将获取到的图片打开,并且在控制台输出图片信息。
以上就是数据处理中使用Dataset类来对数据进行管理,本文仅仅简单介绍了对Dataset的使用,而Dataset中还提供了大量能使我们快速便捷地处理数据的函数和方法。