Tensorflow oder Scipy Anzahl Output Werte

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
DaniDD
User
Beiträge: 3
Registriert: Donnerstag 28. Dezember 2017, 10:01

Hallo,
ich möchte tensorflow oder ggf auch SciPy nutzen und bin dadurch zu Python gekommen. Ich bin da also noch blutiger Anfänger.
Das NN was ich mit tensorflow erstellen will hat 12 Werte die Werte zwischen 0 und 4 einnehmen können. Die Beispiele die ich finde haben aber alle nur eine Ausgabespalte oder mehrere Spalte die aber nur 0 oder 1 sein können. Genau so auch bei SciPy.
Daher ist die Frage ist das generell nicht vorgesehen das es mehrere Ausgabespalten gibt und dann noch mit mehr als 2 möglichen Werten oder muss ich dazu irgendwas anders machen, also bspw meine 12 x 5 Werte in 1x 60 Werte umcodieren?
narpfel
User
Beiträge: 643
Registriert: Freitag 20. Oktober 2017, 16:10

Moin,

ich kenne mich nicht wirklich mit `tensorflow` aus, aber du kannst immer mit `ndarray.reshape` die Form eines `numpy.ndarray` ändern, wenn sich dadurch die Gesamtzahl an Elementen nicht ändert. Bespiel:

Code: Alles auswählen

In [2]: x = np.random.random((2, 6))

In [3]: x
Out[3]:
array([[ 0.71221421,  0.37297008,  0.06102527,  0.31099048,  0.61292559,
         0.42199297],
       [ 0.60080918,  0.0530944 ,  0.89177206,  0.6100413 ,  0.75753554,
         0.6154299 ]])

In [4]: x.shape
Out[4]: (2, 6)

In [5]: x.reshape((3, 4))
Out[5]:
array([[ 0.71221421,  0.37297008,  0.06102527,  0.31099048],
       [ 0.61292559,  0.42199297,  0.60080918,  0.0530944 ],
       [ 0.89177206,  0.6100413 ,  0.75753554,  0.6154299 ]])

In [6]: x.reshape((12, ))
Out[6]:
array([ 0.71221421,  0.37297008,  0.06102527,  0.31099048,  0.61292559,
        0.42199297,  0.60080918,  0.0530944 ,  0.89177206,  0.6100413 ,
        0.75753554,  0.6154299 ])

In [7]: x.reshape((5, 5))
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-7-2d61a6bc965f> in <module>()
----> 1 x.reshape((5, 5))

ValueError: cannot reshape array of size 12 into shape (5,5)
Wenn es eine Möglichkeit gibt, das direkt in `tensorflow` einzustellen, dass das Ergebnis-Array eine bestimmte `shape` haben soll, dann wäre das natürlich besser. Da würde es sich dann anbieten, die Tensorflow-Dokumentation zu lesen, anstatt irgendwo Beispiele zu suchen...
DaniDD
User
Beiträge: 3
Registriert: Donnerstag 28. Dezember 2017, 10:01

Moin narpfel,
vielen Dank schon mal für deine Idee das array mit reshape umzubauen.
Ich vermute aber das wird nicht gehen da die Werte dann eine falsche Anzahl haben. Was ich erreichen will ist eine Vorhersage für Neurodermitis Haut abhängig vom dem was gegessen wird oder ähnliche Faktoren wie Stress o.ä.
Also bspw Tag 1 Menge von A gegessen=2 von B=1, C=3 usw und Haut sieht dann leicht rot aus = 1, dann aber noch es juckt usw. Es muss also die Anzahl wegen der Zuordenbarkeit gleich bleiben. Was ich als Neuling aber auch nicht genau weis wie sich das verhält wenn ich die Werte der Ausgabe bitweise addiere. Da ich 4 Möglichkeiten der Ausgabewerte habe (0-3) kann ich ja dafür 2 Bit nutzen. Ich habe ja aber 12 Werte, also benötige ich 24bit. Wenn ich jetzt einfach eine 24bit Zahl nehme und die dann nach der Simulation wieder in Bits umwandele ob ich da aussagekräftige Werte bekomme.

In der Tensorflow Hilfe habe ich auch noch nicht das Gewünschte gefunden. Etwas fehlen mir auch paar Fachbegriffe um direkt danach suchen zu können.
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe noch keine eigenen Erfahrungen mit NNs, schleiche aber etwas um das Thema rum. Ich frage ich mich, ob du die kombinatorische Explosion die du momentan bekommst (12-Tupel, 4*12 Klassen) eigentlich brauchst. Und es nicht zielführender wäre 12 Netze zu trainieren. Das hängt aber natürlich davon ab, ob die unabhängig sind oder nicht.
DaniDD
User
Beiträge: 3
Registriert: Donnerstag 28. Dezember 2017, 10:01

Danke deets, die Idee ist gut. Daran hatte ich noch überhaupt nicht gedacht die Ausgabeneuronen einzeln zu trainieren. Das probiere ich mal und schaue mir mal dann das Gesamtergebniss an in wie weit da die Treffergenauigkeit ist.
Antworten