Data is ___ ?
article thumbnail

📚 파이토치에는 Dataset과 DataLoader라는 기능이 있어서 미니 배치 학습이나 데이터 셔플, 병렬 처리 까지 간단히 수행할 수 있다.

📚 TensorDataset을 DataLoader에 전달해서 데이터의 일부만 간단히 추출할 수 있다. 

 

 

TensorDataset

🎀 개념

  • Dataset을 상속한 클래스로 학습 데이터 X와 레이블 Y를 묶어 놓는 컨테이너이다.
  • 이것을 DataLoader에 전달하면 for 루프에서 데이터의 일부분만 간단히 추출할 수 있게 된다.
  • TensorDataset에는 텐서만 전달할 수 있으며, Variable은 전달할 수 없으니 주의
  • Dataset은 직접 작성할 수도 있어서 대량의 이미지 파일을 한 번에 메모리에 저장하지 않고 필요할 때마다 읽어서 학습하는 등 다양하게 활용할 수 있다.

 

 

 

🎀 코드 구현

  • 베이스라인
import torch
from torch.utils.data import Dataset

# 커스텀 데이터를 불러오는 가장 기본적인 형태 (넘파이 배열)
class 클래스명(Dataset) :
	
    # 데이터 세팅에 필요한 것들을 미리 정의
    def __init__(self) :
    ...
    
    # DalaLoader를 통해 샘플이 요청되면 아래의 함수에서 인덱스에 해당하는 샘플 찾아서 준다.
    def __getitem__(self, index) :
    ...
    
    # 크기 반환
    def __len__(self) :
    ...
    
    
    # 이미지의 경우 PIL-Image, Tensor 타입일 때 텐서로 전처리
    class 클래스명 :
    	
        # 텐서 변환 전처리 클래스 정의
        # TensorData 클래스에서 sample을 불러와 작업하기 때문에 __call__ 함수 이용
    	def __call__(self, sample) :
  • 그 외 방법들 (자세한 코드는 깃허브 참고)
    • 정리되지 않은 커스텀 데이터 불러오기
    • 커스텀 데이터 + 커스텀 전처리
    • 커스텀 데이터 + 파이토치 제공 전처리
    • 커스텀 전처리 + 파이토치 제공 전처리

 

 

 

 

 


 

DataLoader

🎀 개념 

  • PyTorch의 DataLoader 는 배치 관리를 담당한다.
  • 모든Dataset 으로부터 DataLoader 를 생성할 수 있다.
  • DataLoader 는 배치에 대해서 반복하기 편리하게 해준다.
  • DataLoader 는 각각의 미니배치를 자동으로 제공한다.

 

 

🎀 코드 구현

  • DataLoader의 인자로는 데이터, 배치 사이즈, 셔플의 여부 정도 들어간다.
  • 배치 사이즈는 하이퍼파라미터
  • shuffle은 대부분 train에만 적용한다.
import torch
from torch.utils.data import DataLoader

# 대부분의 형태
trainloader = DataLoader(trainset, batch_size = 50, shuffle=True)
testloader = DataLoader(testset, batch_size = 50, shuffle=False)

'Python > 라이브러리' 카테고리의 다른 글

[Pytorch] torch.max( ) & torch.argmax( )  (0) 2023.01.30
[Pytorch] GPU device  (0) 2023.01.28
[Python] 파이썬 파일 관련 코드들  (0) 2023.01.20
[Matplotlib] 정리  (0) 2023.01.20
[Pytorch] nn.Linear( ), MLP  (0) 2023.01.20
profile

Data is ___ ?

@콩순이컴퓨터

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...