Een autoencoder is een neuraal netwerk met een compressie en een decompressie gedeelte. Toepassing is bijvoorbeeld een de-noiser waarbij 'de ruis' uit afbeeldingen kan worden gehaald. Om een autoencoder te trainen geef je in principe dezelfde input als de output. Het netwerk leert dan deze gegevens in een heel gecomprimeerde vorm weer te geven.
Leuk om eens mee te experimenteren. Ik vind hier een aardige voorbeeld site en besluit daarop geïnspireerd ook maar weer eens de mnist-dataset te gebruiken. De mnist-dataset bestaat uit een 60K geclassificeerde, zeer wisselend geschreven cijfers van 0 tot 9. De 'afbeeldingen zijn behoorlijk compact (28x28 pixels) waardoor er relatief makkelijk mee te werken is. Bovendien biedt Keras, mijn favorite DL framework, de dataset standaard aan om mee te testen. (Lekker lui :-)
Ik gebruik het convolutional model uit bovenstaande site. Keras heeft de mogelijkheid om met een Theano backend of met een (Google) Tensorflow backend te werken. Hoewel in principe beide voor mij zou kunnen krijg ik Tensorflow zo snel niet werkend op de GPU. Dan maar op Theano.
Ik wil proberen of met autoencoders op een of andere wijze de 'essentie' van afbeeldingen kunnen worden getraind. Zoiets van 'dat op de afbeelding wat van belang is voor een classificatie'. En de rest negeren. Onze hersenen zijn daar juist zeer goed in. Al heel snel vind je meestal de locatie van iets kenmerkends voor de afbeelding.
Ik besluit eerst eens te kijken of ik een autoencoder kan gebruiken om de wisselend geschreven letters om te zetten naar 'model letters'. Daartoe kies ik een tiental mooi geschreven voorbeelden en biedt die aan de autoencoder. Dit is het resultaat:
De bovenste regel geeft de gekozen model getallen weer. De 2e enkele willekeurige testgetallen en de derde regel geef het resultaat na 150 epochs trainen. Hij lijkt het redelijk te doen. Hier het verloop van de trainingsresultaten:
Geen opmerkingen:
Een reactie posten