Fully-Connected Layer (Dense Layer)는 앞선 과제들에서 사용했듯 이미지를 input으로 넣을 때, 2차원 형태의 이미지들을 1차원 (1열)로 vectorize하였다.
이렇게 input을 해주면 어떤 문제가 발생할까?
-> 2차원 이미지가 갖고있는 "공간성"이 사라져버린다.
CNN은 2차원 input형태를 유지하며 "feature"를 뽑아내고 마지막에 vectorize를 하기 때문에, 이미지가 갖고있는 상,하,좌,우 모든
방향으로의 특징들도 살려서 분석해낼 수 있다.
2차원, 혹은 3차원 input 형태를 유지하며 (size는 작아질 수 있음) 특징을 뽑아내는 "Feature layers"와
분류를 담당하는 "Classifier layer"로 나누어볼 수 있다.
Pytorch는 더 나은 가독성과 모듈성을 위해 Dataset 코드를 모델 학습 코드로부터 분리하는 것이 이상적이라고 말한다.
따라서 Pytorch는 torch.utils.data.DataLoader와 torch.utils.data.Dataset의 두가지 데이터 요소를 제공하여 데이터를 사용할 수 있게 한다.
Dataset에 샘플과 Label을 저장하고,
DataLoader는 우리가 Dataset에 쉽게 접근할 수 있게 Dataset을 iterable로 감싼다.