pytorch Dataset and Datasetloader

在使用pytorch构架数据集的时候,使用torch.utils.data.Dataset和torch.utils.data.DataLoader会大大提高效率,且基本能满足需求。
这里主要记录个人对于torch.utils.data.Dataset和torch.utils.data.DataLoader的理解

1. torch.utils.data.Dataset:
pytorch对于Dataset的原始定义是比较简单的:

而我们在定义自己的数据集时,是继承这个类再进行的定义的,并且继承后一定要重写 __len__(self)和__getitem__(self, index)这两个函数,例如:

我认为这里最重要的就是我画横线的三个函数,也是自己新建的数据库中必须包含的三个函数。
__len__(): 这个比较还理解,返回文件的个数;
__init__(): 初始化函数,init里包含的性质也就是自己新建的数据集包含的性质;
__getitem__():  我认为这个函数是Dataset类最重要的一个函数。因为他决定了你之后用torch.utils.data.DataLoader之后返回的内容。开始我一直不知道这个函数在什么时候会被调用,因为在类内部找不到调用这个函数的地方,而它又不像__init__()会被默认调用。原来是在后面使用torch.utils.data.DataLoader时才会调用这个函数。后面说再详细点。
其他函数可以根据需要再常规定义。

 

2. torch.utils.data.DataLoader
Dataloader的定义复杂一些,函数也更多。
|
在使用dataloader的时候:


在运行到画红线的地方会进入到Dataset的__getitem__()里面,返回的是一个迭代器,这个迭代器的内容是N个batch_size的数据,所以用 in 来得到各个batch的数据。
在读取数据的过程中,如果Dataset写不好,生成这个迭代器的过程是很费时间的,会减慢训练速度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值