Een autoencoder bouwen
Autoencoders hebben verschillende interessante toepassingen, zoals anomaliedetectie of het verwijderen van ruis uit afbeeldingen. Ze zijn erop gericht een output te produceren die identiek is aan de input. De input wordt gecomprimeerd naar een lager-dimensionale ruimte, gecodeerd. Het model leert dit vervolgens weer decoderen naar de oorspronkelijke vorm.
Je gaat de MNIST-gegevensset met handgeschreven cijfers coderen en decoderen. De verborgen laag codeert een 32-dimensionale representatie van de afbeelding, die oorspronkelijk uit 784 pixels bestaat (28 x 28). De autoencoder leert in feite om de oorspronkelijke afbeelding van 784 pixels om te zetten naar een gecomprimeerde afbeelding van 32 pixels en leert vervolgens hoe die gecodeerde representatie te gebruiken om de oorspronkelijke afbeelding van 784 pixels terug te krijgen.
Het Sequential-model en de Dense-lagen staan klaar voor gebruik.
Laten we een autoencoder bouwen!
Deze oefening maakt deel uit van de cursus
Introductie tot Deep Learning met Keras
Oefeninstructies
- Maak een
Sequential-model. - Voeg een dense-laag toe met evenveel neuronen als de dimensie van de gecodeerde afbeelding en
input_shapegelijk aan het aantal pixels in de oorspronkelijke afbeelding. - Voeg een laatste laag toe met evenveel neuronen als pixels in de inputafbeelding.
- Compileer je
autoencodermetadadeltaals optimizer enbinary_crossentropyals loss, en geef daarna een samenvatting weer.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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
____