Budowanie autoenkodera
Autoenkoderzy mają wiele ciekawych zastosowań – od wykrywania anomalii po usuwanie szumów z obrazów. Ich zadaniem jest odtworzenie danych wyjściowych identycznych z wejściowymi. Dane wejściowe są kompresowane do przestrzeni o niższym wymiarze – to etap kodowania. Model uczy się następnie je dekodować z powrotem do oryginalnej postaci.
Zakodujemy i zdekodujemy zbiór danych MNIST zawierający odręcznie pisane cyfry. Warstwa ukryta będzie kodować 32-wymiarową reprezentację obrazu, który pierwotnie składa się z 784 pikseli (28 x 28). Autoenkoder nauczy się zatem przekształcać oryginalny obraz o 784 pikselach w skompresowaną reprezentację 32-pikselową, a następnie odtwarzać z niej pierwotny obraz 784-pikselowy.
Model Sequential oraz warstwy Dense są już gotowe do użycia.
Zbudujmy autoenkoder!
To ćwiczenie jest częścią kursu
Wprowadzenie do uczenia głębokiego z Keras
Instrukcje do ćwiczenia
- Utwórz model
Sequential. - Dodaj warstwę gęstą z liczbą neuronów równą wymiarowi zakodowanego obrazu oraz
input_shapeodpowiadającym liczbie pikseli w oryginalnym obrazie. - Dodaj warstwę końcową z liczbą neuronów równą liczbie pikseli w obrazie wejściowym.
- Skompiluj swój
autoencoder, używając optymalizatoraadadeltai funkcji stratybinary_crossentropy, a następnie wyświetl jego podsumowanie.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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
____