딥러닝/이것저것

딥러닝(5) - 합성곱 신경망 구현하기 : 구현에 필요한 것들 모음

SolartheNomad 2023. 3. 18. 16:04

#fashion_mnist 데이터셋

토치비전에 내장된 예제 이미지 데이터셋

 

fashion_mnist의 데이터 셋 구성

 

train_images : 0~255 사이의 값을 갖는 크기의 넘파이 배열

레이블(정답) 데이터(train_labels) : 0~9까지 정수값을 갖는 배열 

   ** 레이블(정답) 데이터들의 features

0 : T-Shirt
1 : Trouser
2 : Pullover
3 : Dress
4 : Coat
5 : Sandal
6 : Shirt
7 : Sneaker
8 : Bag
9 : Ankle Boot

 

 

#  GPU 사용 관련

 

하나의 GPU를 사용할 때의 세팅 설정 

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model = Net()
model.to(device)

 

여러 개의 CPU 사용할 때의 세팅 설정

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = Net()
if torch.cuda.device_count() > 1:
    model = nn.DataParallel(net) 
model.to(device)

 

** nn.DataParallel

배치 크기가 알아서 각 GPU로 분배됨 

GPU 수만큼 배치 크기도 똑같이 늘려주어야 함 

 

## torchvision.datasets 

torch.utils.data.Dataset의 하위 클래스로 다양한 데이터셋(CIFAR, COCO, MNIST, ImageNet 등)을 가지고 있음 

torchvision.datasets.FashionMNIST("FashionMNIST를 내려받을 위치 지정", download=True, transform=transform.Compose([transforms.ToTensor()]))

download = True

첫 번째 파라미터의 위치에 해당 데이터셋이 있는지 확인한 후 내려받기

 

transfrom.Compose([transforms.ToTensor()]) 

이미지를 텐서(0~1)로 변경한다.

 

#torch.utils.data.DataLoader()

원하는 크기의 배치 단위로 데이터를 불러오거나, 순서가 무작위로 섞이도록(shuffle) 하는 것 

 

 

ⓐ train_dataset: 데이터를 불러올 데이터셋을 지정함

 batch_size: 데이터를 배치로 묶어 준다. 여기에서는 batch_size=100으로 지정했기 때문에 100개 단위로 데이터를 묶어서 불러온다.