torch.utils.data [3]

J·2021년 6월 22일
0

pytorch

목록 보기
19/23

torch.utils.data.Dataset

Dataset을 나타내는 abstract class 이다.
key와 data sample의 map을 나타내는 데이터셋은 모두 이 class를 subclass해야한다. 모든 subclasses는 주어진 key에 대한 data sample fetching을 지원하는 __getitem__() 을 overwrite 해야합니다. subclass는 선택적으로 Sampler implementations과 DataLoader의 default option에 따른 데이터셋의 사이즈 반환하게 기대되는 __len__()을 overwrite할 수 있다.

  • DataLoader는 기본적으로 정수 index를 생성하는 index sampler를 구성합니다. 정수가 아닌 index/key와 map-style dataset이 함께 동작하기 위해서는 custom sampler가 주어져야 합니다.

torch.utils.data.IterableDataset

data sample들의 iterable을 나타내는 dataset들은 모두 이 class를 subclass해야한다. 이러한 dataset형태는 data가 stream형태로 들어올 때 유용하다. 모든 subclasses들은 dataset의 sample들의 iterator를 반환하는 __iter__()를 overwrite해야 한다.

subclass가 DataLoader와 함께 쓰일 때, 데이터셋의 각 item들은 DataLoader iterator로부터 생성된다.

num_worker > 0 일 때, 각 worker process는 dataset object의 다른 복사본을 가진다. 그래서 복사본을 독립적으로 설정하여 worker로부터 반환된 중복된 데이터를 가지는 것을 방지하는 것이 권장된다. get_worker_info()가 worker process 중에 호출되었을 때 worker에 대한 정보를 반환한다. 이것은 각 복사본의 behavior를 수정하기 위해 dataset의 __iter__() method 나 DataLoader의 worker_init_fn option 에서도 사용될 수 있습니다.

torch.utils.data.TensorDataset(*tensors)

Dataset wrapping tensors
각 sample은 first dimension을 따라 indexing tensor에 의해 검색됩니다.

torch.utils.data.ConcatDataset(datasets)

multiple dataset을 concatenate한 dataset
이 class는 다른 datasets들을 모을 때 유용하다.

torch.utils.data.ChainDataset(datasets)

multiple IterableDatasets을 연결하는 dataset
이 class는 여러가지 datasets의 stream을 모으는데 유용하다. 연결하는 연산은 빠르게 수행되므로 large-scale datasets을 이 class를 이용해 concatenate하는 것은 효율적이다.

torch.utils.data.Subset(dataset, indices)

지정된 index를 이용한 dataset의 부분집합이다.

Reference

  1. https://pytorch.org/docs/stable/data.html?highlight=torch%20utils%20data#map-style-datasets
profile
I'm interested in processing video&images with deeplearning and solving problem in our lives.

0개의 댓글