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:
dinsdag 25 april 2017
zaterdag 22 april 2017
Opnieuw installatie issues
Mijn Macpro is helaas wat aan het verouderen. Momenteel start hij niet meer betrouwbaar op. Vaak stopt die gewoon na een paar seconden en begint de ventilator hard te blazen. Na een aantal keren opstarten wordt die wel stabiel en kan ik er gelukkig goed mee werken. Vermoedelijk door wat ongeduld bij het herstarten is echter mijn opstart SSD ook defect geraakt. Ik heb een nieuwe SSD gekocht en ben nu alles weer 'recht aan het breien'.
Dat wil ook zeggen dat alle Python programma's en toebehoren weer geïnstalleerd moeten worden. Zojuist bezig geweest met de GPU en CuDNN ondersteuning voor deep learning projecten. Dat was vorige keer een flinke klus en hoewel het nu iets sneller gaat zitten er toch een hoop haken en ogen aan. Maar weer even vastleggen.
Python had ik al wat eerder geïnstalleerd. Ook Theano werkt wel maar dus zonder de GPU ondersteuning.
Ik start met deze pagina:
http://deeplearning.net/software/theano/tutorial/using_gpu.html
Och ja, ik moet de .theanorc file aanmaken op de root (/usr/local) en aanpassen. Dat ging met de tekst editor 'vi'.
Het blijft lastig om de commando's te herinneren als je hem weinig gebruikt. Met 'i' kom je in de insert mode. Met escape --> ':wq' Schrijf je de aanpassingen weg.
Dat staat hier beschreven:
https://github.com/Theano/Theano/wiki/Converting-to-the-new-gpu-back-end%28gpuarray%29
Als eerste wordt verwezen naar
http://deeplearning.net/software/libgpuarray/installation.html#step-by-step-install-system-library-as-admin
Daar moet eerst cmake 3.8.0 geïnstalleerd worden (cmake.org) Ik installeer de laatste versie. Vervolgens haal ik de laatste CUDA versie (8.0.61) op van de nvidea site. OpenCL zoek ik ook maar dat wordt in de drivers van de grafische kaart al bijgeleverd.
De download van libgpuarray met 'git' gaat goed. De volgende stappen geven wat issues. Met name cmake kent hij niet als commando in de terminal. Ik herinner mij dat ik dat vorige keer ook via het cmake userwindow heb uitgevoerd.
Na de selectie van de directories en configure en generate weer terug naar het script. Daar moet de make en de make install worden uitgevoerd. Hij geeft helaas aan dat hij de library 'cython' niet kan vinden wat ik gelukkig met 'pip install cython' kan verhelpen.
De 'python setup.py build' en 'pyhton setup.py install' lijken zonder problemen te werken.
Helaas geeft Theano nog steeds een foutmelding:
"clang: warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior is deprecated"
Het lukt mij niet om de melding weg te krijgen. Ergens in de installatie heb ik blijkbaar iets fout gedaan.
Ik probeer het op de 'oude manier'. Schakelen tussen nieuw en oud gaat zo (in .theanorc): Use
Ik haal nu ook Cudnn 8.0 v 5.1 op van de nvidea site. Door weer de cudnn files naar de juiste folders in cuda te zetten (zie eerder bericht) lukt het om ook cuDNN actief te krijgen. Wel moet ik weer de paden aangeven die gebruikt moeten worden.
Ik gebruik de info vanuit hier:
https://coolestguidesontheplanet.com/add-shell-path-osx/
en creëer met vi een .bash_profile om de paden fixed te laten opstarten.
En het werkt!!!! :
Using gpu device 0: GeForce GTX 980 (CNMeM is disabled, cuDNN 5110)
Wel is de warning wat zorgelijk. Misschien later toch nog eens die @@#$% gpuarray aan de praat zien te krijgen.
Dat wil ook zeggen dat alle Python programma's en toebehoren weer geïnstalleerd moeten worden. Zojuist bezig geweest met de GPU en CuDNN ondersteuning voor deep learning projecten. Dat was vorige keer een flinke klus en hoewel het nu iets sneller gaat zitten er toch een hoop haken en ogen aan. Maar weer even vastleggen.
Python had ik al wat eerder geïnstalleerd. Ook Theano werkt wel maar dus zonder de GPU ondersteuning.
Ik start met deze pagina:
http://deeplearning.net/software/theano/tutorial/using_gpu.html
Och ja, ik moet de .theanorc file aanmaken op de root (/usr/local) en aanpassen. Dat ging met de tekst editor 'vi'.
Het blijft lastig om de commando's te herinneren als je hem weinig gebruikt. Met 'i' kom je in de insert mode. Met escape --> ':wq' Schrijf je de aanpassingen weg.
[global]
device = cuda
floatX = float32
Het werkt nog niet. (ImportError: No module named pygpu) Ik probeer tevergeefs 'device = cpu0'. Hmm ... pygpu ... Ik zie dat er een nieuwe manier is om de GPU aan te spreken.Dat staat hier beschreven:
https://github.com/Theano/Theano/wiki/Converting-to-the-new-gpu-back-end%28gpuarray%29
Als eerste wordt verwezen naar
http://deeplearning.net/software/libgpuarray/installation.html#step-by-step-install-system-library-as-admin
Daar moet eerst cmake 3.8.0 geïnstalleerd worden (cmake.org) Ik installeer de laatste versie. Vervolgens haal ik de laatste CUDA versie (8.0.61) op van de nvidea site. OpenCL zoek ik ook maar dat wordt in de drivers van de grafische kaart al bijgeleverd.
De download van libgpuarray met 'git' gaat goed. De volgende stappen geven wat issues. Met name cmake kent hij niet als commando in de terminal. Ik herinner mij dat ik dat vorige keer ook via het cmake userwindow heb uitgevoerd.
Na de selectie van de directories en configure en generate weer terug naar het script. Daar moet de make en de make install worden uitgevoerd. Hij geeft helaas aan dat hij de library 'cython' niet kan vinden wat ik gelukkig met 'pip install cython' kan verhelpen.
De 'python setup.py build' en 'pyhton setup.py install' lijken zonder problemen te werken.
Helaas geeft Theano nog steeds een foutmelding:
"clang: warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior is deprecated"
Het lukt mij niet om de melding weg te krijgen. Ergens in de installatie heb ik blijkbaar iets fout gedaan.
Ik probeer het op de 'oude manier'. Schakelen tussen nieuw en oud gaat zo (in .theanorc): Use
device=cuda
or cuda0
, ... instead of gpu.
Yes !!! Dat lijkt gelukkig te lukken. Ik haal nu ook Cudnn 8.0 v 5.1 op van de nvidea site. Door weer de cudnn files naar de juiste folders in cuda te zetten (zie eerder bericht) lukt het om ook cuDNN actief te krijgen. Wel moet ik weer de paden aangeven die gebruikt moeten worden.
Ik gebruik de info vanuit hier:
https://coolestguidesontheplanet.com/add-shell-path-osx/
en creëer met vi een .bash_profile om de paden fixed te laten opstarten.
export PATH="/usr/local/cuda/bin/:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
WARNING (theano.sandbox.cuda): The cuda backend is deprecated and will be removed in the next release (v0.10). Please switch to the gpuarray backend. You can get more information about how to switch at this URL:
https://github.com/Theano/Theano/wiki/Converting-to-the-new-gpu-back-end%28gpuarray%29
Wel is de warning wat zorgelijk. Misschien later toch nog eens die @@#$% gpuarray aan de praat zien te krijgen.
Abonneren op:
Posts (Atom)