Artificial intelligence/Pytorch

    Pytorch Dataset과 DataLoader

    파이토치에서 데이터들을 학습할 때 굉장히 유용한 기능으로 DataLoader가 있습니다. DataLoader는 파이토치에서 데이터들을 원하는 batch size로 잘라줍니다. DataLoader를 사용하면 batch size에 맞추어 학습을 굉장히 쉽게 학습을 수행할 수 있습니다. 이 때 DataLoader에 넣어주어야 하는 값이 Dataset이 됩니다. How To Use Dataset from torchvision import datasets, transforms train_dataset = datasets.MNIST( root = "data", download = True, train = True, transform = transforms.Compose([ transforms.ToTensor() ]..

    torchvision.transforms (ToTensor, Normalize, Resize, RandomCrop,Compose)

    transforms 모듈은 이미지를 학습을 위해 적절히 변환할때 사용합니다. 모듈에서 주로 사용하는 것을 소개하겠습니다. module import import torchvision.transforms as transforms transforms.ToTensor transforms.ToTensor() Pytorch의 배열은 배열구조가 C*H*W(C:채널, H:높이, W:너비)입니다. 하지만 PIL이미지와 Numpy 배열에서는 H*W*C입니다. ToTensor는 이러한 데이터의 구조를 변경해줍니다. 또한 ToTensor는 이미지 픽셀의 밝기정도를 Scale해줍니다. 밝기정도가 0~255로 표시되었다면 그 값을 0~1로 scale해주게 됩니다. transforms.Nomalize transforms.Norma..

    [Pytorch] nn.module을 상속받을 때 super().__init__()을 하는 이유

    [Pytorch] nn.module을 상속받을 때 super().__init__()을 하는 이유

    파이토치에서 클래스로 Layer나 Model을 구현해주면 항상 생성자에서 super(class이름, self).__init__()을 입력해줍니다. 왜 이것을 입력해야 하는지 궁금하여 알아보았습니다. super().__init__()이 없다면? import torch class Test(torch.nn.Module): def __init__(self): self.linear = torch.nn.Linear(3,2) def forward(self,x): return self.linear(x) Test를 위해 굉장히 간단한 torch.nn.Module을 상속받는 클래스를 만들어보았습니다. 그리고 이 클래스를 활용해 모델을 만들어보겠습니다. model = Test() 생성을 하게 된다면 AttributeErro..