시작하기무료로 시작하기

오토인코더 만들기

오토인코더는 이상 탐지나 이미지 노이즈 제거 등 여러 흥미로운 응용 분야가 있어요. 목표는 입력과 동일한 출력을 만드는 것입니다. 입력을 더 낮은 차원의 공간으로 압축해 인코딩하고, 그 표현을 원래 형태로 다시 디코딩하도록 모델이 학습해요.

이번에는 손글씨 숫자 MNIST 데이터셋을 인코딩하고 디코딩해 보겠습니다. 은닉층은 원래 784픽셀(28 x 28)로 구성된 이미지를 32차원 표현으로 인코딩해요. 오토인코더는 784픽셀의 원본 이미지를 압축된 32픽셀 표현으로 변환하는 법과, 그 인코딩된 표현을 사용해 다시 원래의 784픽셀 이미지를 복원하는 법을 학습하게 됩니다.

Sequential 모델과 Dense 레이어는 이미 준비되어 있어요.

이제 오토인코더를 만들어 볼까요!

이 연습은 강의의 일부입니다

Keras로 시작하는 딥 러닝

강의 보기

연습 안내

  • Sequential 모델을 생성하세요.
  • 인코딩된 이미지 차원 수만큼 뉴런을 가진 Dense 레이어를 추가하고, input_shape는 원본 이미지의 픽셀 수로 설정하세요.
  • 입력 이미지의 픽셀 수와 동일한 뉴런 수를 가진 최종 레이어를 추가하세요.
  • 옵티마이저는 adadelta, 손실 함수는 binary_crossentropy로 설정해 autoencoder를 컴파일한 다음, 요약을 출력하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Start with a sequential model
autoencoder = ____

# Add a dense layer with input the original image pixels and neurons the encoded representation
autoencoder.add(____(____, input_shape=(____, ), activation="relu"))

# Add an output layer with as many neurons as the orginal image pixels
autoencoder.add(____(____, activation = "sigmoid"))

# Compile your model with adadelta
autoencoder.compile(optimizer = ____, loss = ____)

# Summarize your model structure
____
코드 편집 및 실행