KalelPark's LAB

[ Pytorch ] Data Sampler & Sequence Bucketing? 본문

Python/Pytorch

[ Pytorch ] Data Sampler & Sequence Bucketing?

kalelpark 2023. 1. 24. 10:50

Data Sampler는 주어진 Data Pool과 batchsize에서 어떻게 batch를 형성할지 결정해주며,
Dataset의 순서를 결정하는 역할을 하기도 합니다. DataLoader가 초기화될 때, 데이터셋의 샘플들의 Sequence Order를 작성한다.
만들어진 Sequence를 통하여, 데이터셋에서 데이터들이 주어진 Batchsize만큼 batch의 형태로 나오게 됩니다.

 

Sampler에는 여러가지가 존재합니다.

 

   - Random Sampler : 랜덤, replacement 여부 선택 가능, 개수 선택 가능

   - SubsetRandom Sampler : 랜덤 리스트, 위와 두 조건 불가능

   - Sequential Sampler : 항상 같은 순서

   - Custom Sampler (Weight) : 가중치에 따른 확률

   - DistributedSampler (Weight) : 분산처리

 

위의 내용을 공부한 이유는, Self-Supervised Learning을 위함이다.

Self Supervised Learning에서의 Unsupervised의 경우에는 Positive Sampling과 NegativeSampling을 해야하는데,
Positive Sampling과 NegativeSampling을 하는 방법에 대해서 명확히 몰랐었다. transform으로 간단할 수 있음을 알 수 있다.

# Transform
train_transform = transforms.Compose([
                transforms.Resize((250,250)),
                transforms.RandomResizedCrop(224),
                transforms.RandomApply([
                        transforms.ColorJitter(0.5, 0.5, 0.5)
                        ], p=0.8),
                transforms.RandomGrayscale(p=0.2),
                transforms.ToTensor(),
                transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))
])


# Transform 설정
class Split:
    def __init__(self, base_transform):
        self.base_transform = base_transform

    def __call__(self, x):
        q = self.base_transform(x)
        k = self.base_transform(x)
        return [q, k]
        
# transform 설정
train_ds = datasets.STL10(path2data, split='train', 
			 download=True, transform=Split(train_transform))
train_dl = DataLoader(train_ds, batch_size=256, shuffle=True)

 

참고

https://deep-learning-study.tistory.com/744

 

[논문 구현] MoCov2(2020) PyTorch 구현

안녕하세요, 이번 포스팅에서는 MoCov2를 Google Colab 환경에서 PyTorch로 구현해보도록 하겠습니다. 논문 리뷰와 전체 코드는 아래 주소에서 확인하실 수 있습니다. [논문 읽기] MoCov2(2020), Improved Baseli

deep-learning-study.tistory.com

https://subinium.github.io/pytorch-dataloader/

 

[Pytorch] DataLoader parameter별 용도

pytorch reference 문서를 다 외우면 얼마나 편할까!!

subinium.github.io

https://www.kaggle.com/code/shahules/guide-pytorch-data-samplers-sequence-bucketing/notebook

 

Guide: Pytorch data Samplers & Sequence bucketing

Explore and run machine learning code with Kaggle Notebooks | Using data from CommonLit Readability Prize

www.kaggle.com

 

Comments