본문 바로가기

Pytorch6

[Pytorch] Custom dataset & dataloader 만들기 custom dataset / dataloader가 필요한 이유 점점 많은 양의 data를 이용해서 딥러닝 모델을 학습시키는 일이 많아지면서 그 많은 양의 data를 한번에 불러오려면 시간이 오래걸리는 것을 넘어서서 RAM이 터지는 일이 발생한다. 데이터를 한번에 다 부르지 않고 하나씩만 불러서 쓰는 방식을 택하면 메모리가 터지지 않고 모델을 돌릴 수 있다. 그래서 모든 데이터를 한번에 불러놓고 쓰는 기존의 dataset말고 custom dataset을 만들어야할 필요가 있다. 또한 길이가 변하는 input에 대해서 batch를 만들기 위해서는 dataloader에서 batch를 만드는 부분을 수정해야할 필요가 있어 custom dataloader를 사용해야 한다. 그래서 dataset과 dataload.. 2021. 6. 21.
[Pytorch] Numpy에서 Tensor로 PyTorch에서 Numpy array를 Tensor 자료형으로 바꾸기 위한 방법을 알아보자. 데이터를 읽어와서 네트워크의 입력인 Tensor로 변환하여 Dataset를 만드는데 다음과 같은 연산이 필요하다. Pytorch의 2가지 변환함수와 그 차이점은 아래와 같다. torch.Tensor() 와 torch.from_numpy() torch.Tensor() 는 Numpy array의 사본일 뿐이다. 그래서 tensor의 값을 변경하더라도 Numpy array자체의 값이 달라지지 않는다. 하지만 torch.from_numpy()는 자동으로 input array의 dtype을 상속받고 tensor와 메모리 버퍼를 공유하기 때문에 tensor의 값이 변경되면 Numpy array값이 변경된다. 예시를 통해 .. 2021. 6. 21.
[Pytorch] CNN을 이용한 MNIST 이전에 DNN을 통해 MNIST data를 가지고 분류(classification)를 진행하였다. 이번에는 Convolutional Neural Network (CNN)을 통해서 똑같은 Task를 진행하고자 한다. 이전과는 다른 버전의 코드로 진행한다. 라이브러리 Import하기 import torch import torchvision.datasets as dsets import torchvision.transforms as transforms import torch.nn.init GPU 사용 가능에 따라 랜덤시드 고정 만약 gpu 사용이 가능하면 device 값이 cuda가 되고, 사용이 불가하면 cpu가 된다. device = 'cuda' if torch.cuda.is_available() else .. 2021. 6. 7.
[Pytorch] DNN을 이용한 MNIST 라이브러리 Import하기 Pytorch에서 Deep Neural Network(DNN)를 설계하기 위해 필요한 라이브러리를 Import한다. #Importing Library import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms DNN 모델 MNIST 데이터는 28x28로 총 784개의 픽셀로 이루어져 있다. 그렇기 때문에 784를 입력 크기 값으로 받는다. 네트워크는 총 6개의 레이어로 이루어져 있으며 숫자의 종류(0~9)에 따라 마지막 출력단은 10개로 설정한다. 각각의 활성함수(activation fun.. 2021. 6. 7.