본문 바로가기

dataloader3

[Pytorch] 진짜 커스텀 데이터셋 만들기, 몇 가지 팁 Pytorch 개발자들이 이미 데이터셋, 데이터로더 클래스를 여러 개 만들어 두었다. 데어터셋의 경우 ImageFolder, DatasetFolder 와 같이 내 폴더 안에 있는 데이터들을 돌게 해주는 애들과 CIFAR10, ImageNet 등 유명한 베이스라인 데이터셋을 다운로드부터 train/test 스플릿까지 손쉽게 해주는 클래스 들이 있다. 이번에는 이런 것보다 조금 더 low-level로 직접 데이터셋 클래스를 만들어서 이를 데이터로더에 집어 넣는 것까지 해보겠다. 핵심은 바로 위 사진에 있는 torch.utils.data.Dataset 이라는 class를 상속받는 자식 클래스를 만들 것이다. 이 자식 클래스가 필요로 하는 메소드는 3가지이며, 다음과 같다. (언더바가 두 개임) 설명을 잘 모르.. 2021. 10. 4.
[CUDA] GPU 메모리는 할당되어 있는데 프로세스가 안 나올때 사진은 없긴 한데 또 생기면 캡쳐해서 올리겠습니다. nvidia-smi 는 GPU의 사용량을 모니터링하기 위해 사용합니다. 여기에는 GPU가 몇 개인지 어떤 GPU인지, 메모리는 얼마나 사용하고 있는지, 파워나 온도 등 여러 정보가 나옵니다. 추가로 watch -n 1 nvidia-smi 를 터미널에 치면 1초마다 업데이트 됩니다. nvidia-smi를 1초마다 눌러라 라는 명령이라서요. 그런데 가끔 코드를 돌리다가 Ctrl + C를 통해서 코드를 Terminate 시킬 때 어떻게 잘못하게 되면 nvidia-smi의 위쪽 부분에서 분명 메모리는 할당되어 있는데 아래에 Process에는 아무것도 없는 상황이 생길 때가 있습니다. 이 때에는 실제로 다시 코드를 돌려보면 GPU Out of Memory가 뜨게.. 2021. 5. 4.
[Pytorch] Dataloader 다양하게 사용하기 (custom loader) 파이토치의 데이터로더는 아래의 형태와 같이 사용합니다. path = 'C:/test' dataset = torchvision.dataset.ImageFolder(root=path, transform=transforms.Compose([ transforms.Grayscale(), transforms.ToTensor(), ])) dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=True) 이미지든 어떠한 형태의 데이터를 모두 다룰 수 있지만, 위에 사용한 ImageFolder는 이미지를 다루는 애고 다른 형식의 데이터는 조금 후에 말하겠습니다. 데이터로더는 만들어진 이유가 Classification 태스크를 다루기.. 2020. 4. 15.