vrijdag 7 augustus 2015

Een vastlopertje

Na de Titanic experimentjes met scikit's svm (support vector machine) nu eens een echt neuraal netwerkje aan de Titanic gegevens koppelen. Ik kies hiervoor eerst het 'standaard net' uit de eerdere Python / Theano cursus. Als input gebruik ik dan dus niet de cijferafbeeldingen van de mnist dataset maar de Titanic passagiers gegevens.
Het 'high-end' convolutional netwerk is hiervoor minder geschikt omdat dat meer een relatie legt tussen de verschillende pixellocaties in een afbeelding. Deze ontbreken uiteraard in de Titanic set.

Het eenvoudiger netwerk heeft 1 inputlaag, 1 verborgen laag en 1 output laag. De dimensies moeten natuurlijk worden aangepast. Input maken we gelijk aan het aantal kolommen dat we uit de dataset aan gaan bieden. De output is 2 groot (survived of niet => to be or not to be). Het formaat van de tussenlaag (of lagen) in een NN blijkt een kwestie van gevoel. Voorlopig maar eens 2x het aantal colommen.

Het is even worstelen om weer alles op de juiste manier, met de juiste dimensies, aan te bieden. Het resultaat blijft echter teleurstellend. Het rekent snel maar wat ik ook verander de uitkomst is ongeveer 63 %. Zelf als ik het NN niet laat leren. Er zit dus ergens een fout. 2 avonden later ben ik nog niet veel wijzer. Alleen de code om de betrouwbaarheid uit te rekenen geeft misschien een aanwijzing.

Het aanbieden van 1 dataregel uit de testdataset aan de 'predict-functie' geeft een foutmelding:

TypeError: ('Bad input argument to theano function with name "/Users/DWW/Documents/3_net_titanic.py:155"  at index 0(0-based)', 'Wrong number of dimensions: expected 2, got 1 with shape (8,).')       

Dat lukte met de mnist dataset volgens mij wel. Maar weer verder zoeken.


Geen opmerkingen:

Een reactie posten