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
   27   28   29   30   31   32   33   34   35