Page 32 -
P. 32
root="../chap13/data", train=False, transform=transform, download=True)
train_loader = DataLoader(
train_dataset, batch_size=128, shuffle=True, num_workers=4, pin_memory=False) ①
test_loader = DataLoader(
test_dataset, batch_size=32, shuffle=False, num_workers=4)
① 데이터로더는 전체 데이터셋을 작은 단위로 쪼개서 메모리로 가져올 때 사용합니다. 데이터로
더에서 사용하는 파라미터는 다음과 같습니다. (데이터로더에서 사용하는 파라미터는 앞에서도
계속 살펴보았습니다. 그만큼 중요하고 자주 사용하기 때문에 다시 살펴봅니다.)
train_loader = DataLoader(train_dataset, batch_size=128, shuffle=True,
ⓐ ⓑ ⓒ
num_workers=4, pin_memory=False)
ⓓ ⓔ
ⓐ 첫 번째 파라미터: 훈련 데이터셋
ⓑ batch_size: 메모리로 한 번에 불러올 데이터의 크기
ⓒ shuffle: True로 지정하면 데이터를 무작위로 섞겠다는 의미입니다.
ⓓ num_workers: 데이터를 불러올 때 몇 개의 프로세스를 사용할지 지정하는 부분으로 병렬로
데이터를 불러오겠다는 의미입니다. 일반적으로 GPU를 사용할 때 많이 사용하는 파라미터입
13
니다. 너무 많은 값을 할당하면 오버헤드가 발생할 수 있고 작게 할당하면 좋은 성능을 기대할
수 있으므로 적절한 값을 지정해야 합니다. 일반적으로 ‘4 * GPU 개수’를 지정하지만 모든 상
황에 적합한 것은 아니므로 주의해서 사용할 필요가 있습니다. 생성 모델
ⓔ pin_memory: CPU를 사용하다 GPU로 전환할 때 속도 향상을 위해 사용합니다. 따라서 모
델 훈련 과정에서 CPU나 GPU만 사용한다면 True로 지정할 필요가 없는 파라미터입니다.
pin_memory를 True로 지정하면 훈련에 사용할 데이터셋을 GPU에 미리 불러와서 학습시키기
때문에 속도가 향상됩니다.
이제 모델의 네트워크를 생성해 볼 텐데 인코더와 디코더를 사용하여 간단한 오토인코더를 만들
어 봅시다. 이때 데이터셋을 저차원으로 압축하는 것을 인코더라고 하며, 압축된 것을 다시 원래
의 차원으로 복원하는 것을 디코더라고 합니다. 따라서 인코더와 디코더에서 사용하는 네트워크
계층은 같아야 합니다.
687