Dataset是一个包装类,用来将数据包装为Dataset类,然后传入DataLoader中,我们再使用DataLoader这个类来更加快捷的对数据进行操作。
通常包含三个部分:
1.*def __init__(self)*
2.*def __getitem__(self, index):*
3.*def __len__(self):*
在类的代码(函数)中,需要访问当前的实例中的变量和函数的,即,访问Instance中的:
对应的变量(property):利用Instance.ProperyNam,去读取之前的值和写入的新值;
调用对应函数(function):Instance.function(),即执行对应的动作;
-> 而需要访问实例的变量和调用实例的函数,当然需要对应的实例Instance对象本身.
-> 而Python中就规定好了,函数的第一个参数,就必须是实例对象本身,并且建议,约定俗成,把其名字写为self,以self为前缀的变量都可供类中的所有方法使用.
(1)__init__函数可以包含多个参数,如数据的读取路径和对数据的处理设置等一系列设定,常见的__init__函数如下所示:
def init(self, data_root, pad_size=64, flod_num=3, training=True):
(2)__init__中的参数设首先要变成当前实例中的参数,方便DataSet类中的其他函数使用
self.flod_num = flod_num
self.pad_size = pad_size
self.data_root = data_root
self.training = training
(3)在实例化这个类的过程中我们需要对__init__中定义的参数进行实际赋值.例如:
train_set=Dataset('/home/minist', 64, 3, True)
(4)然后利用DataLoader函数对包装的数据进行进一步的处理,如定义batch_size批量处理的数据量,例子如下:
train_loader = data.DataLoader(
train_set,
batch_size=128,
shuffle=True,
drop_last=False)
这个函数通常的参数为self和index,而index是作为一个序号索引:
我们通常从地址中获取的数据是一个包含几千甚至上万个样本的大型整体数据,我们需要单个的获取每一个样本便于对样本集的划分和处理,这个函数就是为了通过索引读取单个的样本,然后返回这单个样本数据和其对应的标签.
这个函数是为了返回样本的总数量,该方法提供了dataset的大小