【torch】dataset, dataloader, sampler
【dataset】
主要工作:处理idx到sample的映射,每个sample有x, y或者其他的
分两种:map式,iterable式
map dataset的实现:
1、数据长度:__len__
2、取数据:__getitem__
iterable dataset要继承data.IterableDataset
复写 __iter__方法,主要用于流式输入,返回一个迭代器
【dataloader】
dataloader解决的问题:哪些数据?数据在哪里?怎么读?
dataloader的工作:
哪些数据 -> sampler -> indices
数据在哪儿 -> dataset -> data
怎么读 -> collate_fn
一般来讲只要DataLoader类就已经足够了,如果对sampler有要求,就复写sampler, 如果对collate_fn有要求就复写collate_fn。
dataloader是个iterable,会返回一个iterator是IterDataLoader对象。__next__函数是要取数据,
sampler是个iterable,返回个iterator
collate_fn