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