더북(TheBook)

~는 입력된 값의 차원을 축소시키는 인코딩 부분이고 ~는 다시 차원을 점차 늘려 입력 값과 똑같은 크기의 출력 값을 내보내는 디코딩 부분입니다. 두 부분이 하나의 Sequential() 함수로 쭉 이어져 오토인코더 모델을 만듭니다.

인코딩 파트에서 입력 크기를 줄이는 방법으로 맥스 풀링(16.4절 참조)을 사용했습니다(, ). 반대로 디코딩 부분에서는 크기를 늘리기 위해 앞에서 배운 UpSampling을 썼습니다(, , ).

여기서 놓치지 말아야 할 것은 에서 입력된 28×28 크기가 층을 지나면서 어떻게 바뀌는지 파악하는 것입니다. 입력된 값은 MaxPooling 층 , 를 지나면서 절반씩 줄어들 것이고, Upsampling 층 , , 을 지나면서 두 배로 늘어납니다. 그렇다면 이상한 점이 하나 있습니다. 어째서 MaxPooling 층은 두 번이 나오고 Upsampling 층은 세 번이 나올까요? 이대로라면 처음 입력된 28×28보다 더 크게 출력되는 것은 아닐까요?

해답은 에 있습니다. 잘 보면 padding 옵션이 없습니다. 크기를 유지시켜 주는 패딩 과정이 없으므로 커널이 적용되면서 크기가 줄어듭니다. 이를 다시 확인하기 위해 전체 구조를 확인해 보면() 다음과 같습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.