20220926-Pytorch_tutorial

강태공·2022년 10월 3일
0

DataLoader

-torch.utils.data.Dataset

  • Dataset 은 샘플과 정답(label)을 저장

-torch.utils.data.DataLoader( 이것도 클래스이다. 대문자)

  • DataLoader 는 Dataset 을 반복 가능한 객체(iterable)로 감싸는 오브젝트(wrapper)

-도메인 특화된 데이터셋 제공

  • TorchVision(이미지처리)

  • TorchText(텍스트, 자연어처리)

  • TorchAudio(음성, 소리)

데이타셋에서 데이터셋을 생성해서 데이터로드에 assign한다.?
데이터셋으로 바로 통과하는게 아님.loader를 통해서..
ex) 김치를 한 포기를 한 번에 처리 못하니까 반찬통에 나눠 담기..= loader의 역할

-Dataset

  • 학습/테스트용 데이터셋 정의

-DataLoader

  • Dataset 로딩할 때 셔플(suffle), mini-batch 등을 적용해 로딩

1급객체 = 못하는게 없는 놈, 제약이 없음

training_data = datasets.FashionMNIST(
    root="data",
    train=True, # 학습데이터 여부
    download=True, #다운로드 하곘다
    transform=ToTensor(), # 행렬 형태로 만들어러
)

test_data = datasets.FashionMNIST(
    root="data",
    train=False,
    download=True,
    transform=ToTensor(),
)
 
 batch_size = 64

train_dataloader = DataLoader(training_data, batch_size=batch_size) # 다운받은 오브젝트를 dataLoder라는 클래스에 인자로 넣음
test_dataloader = DataLoader(test_data, batch_size=batch_size)

for X, y in test_dataloader:
      print(f"Shape of X [N, C, H, W]: {X.shape}")
      print(f"Shape of y: {y.shape} {y.dtype}")
      break
      
ds = datasets.FashionMNIST(root="data", train=True, download=True,  
transform=ToTensor(), target_transform=Lambda(lambda y: torch.zeros(10, 
dtype=torch.float).scatter_(0, torch.tensor(y), value=1)) ) 

name 'Lambda' is not defined 에러 발생.. 구글링해도 나오지 않음

Lambda 함수

기본적인 파이썬 함수

def sample(arg1, arg2):
return arg1+arg2

print(sample(1,2)


arrow function(스칼라 스타일)
(arg1, arg2) -> (arg1+arg2)

파이썬 lambda 예시

lambda x: print(x)

lambda arg1,arg2 : arg1+arg2

(lambda x,y: x+y)(10,20) ----> 정의하면서 바로 호출하기, 여기서 이름을 붙이면?

a = (lambda x,y: x+y)
a(10,20)

PIL

from PIL import Image

image = Image.open("KakaoTalk_Photo_2022-10-02-21-45-03.jpeg")
image.show() # 하면 바로 이미지가 뜬다.---> 쥬피터에 뜨는거 아니고 새창

0개의 댓글