2016-05-15 4 views
0

Ich schuf ein einfaches 2-Schicht-Netzwerk, eine versteckte Schicht. Ich werfe die Gewichte von der mittleren Schicht ab, um zu visualisieren, was die versteckten Neuronen lernen. Ich bin mitVerwechslung mit Gewichten Dumping von neuronalen Netzen in Keras

weights = model.layers[0].get_weights() 

Wenn ich die Gewichte Struktur sehe ich erhalten:

So len(weights) = 2, len(weights[0]) = 500, len(weights[1]) = 100.

Ich möchte ein Array m Größe erstellen (500,100), so dass m.shape = (500,100). Ich versuchte numpy.reshape(weights, 500, 100), zip(weights[0], weights[1]), dann, durch Zufall, schrieb ich numpy.array(weights[0]) und dies kam mit der Form (500,100) zurück.

Kann jemand erklären warum?

+0

Ich habe Verständnis für die Validierung lassen Sie es mich wissen, was bedeutet 'len (Gewichte [0] [0 ]) zurück? – PseudoAj

+0

Das hat Wert 100. – user

Antwort

1

Die Keras-Tensoren funktionieren anders, sie sind n-dimensionale Listen. Zur Veranschaulichung des Begriff der Liste betrachten:

>>> list=[[[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]],[1,2,3]] 

Hier ist das erste Element in der Liste enthält n-Länge Elemente und zweite Liste kann auch ein n-Länge Elemente sein. Wenn Sie das tun:

>>> len(list) 

Ausgang ist:

2(which is 2 in your case) 

Auch

>>> len(list[0]) 

5(which is 500 in your case) 

>>> len(list[1]) 

3(which is 100 in your case) 

Aber wenn Sie versuchen, Array zu konvertieren:

>>> np.array(list[0]).shape 

Die Antwort lautet:

Dies liegt daran, dass Sie ein Listenelement der Länge n in Ihrer Liste haben [0] (das ist in Ihrem Fall [0]). Also, wenn ich Sie gebeten, zurückzukehren

len(weights[0][0]) 

es zurückgegeben:

100 

, weil es enthält 100 Länge Elemente in dieser Liste und 500 solcher Elemente. Nun, wenn Sie sich fragen, was bedeutet jeweils 100 Werte bedeuten, so dass sie corressponding Gewichte der Verbindungen, dh

weights[0][0] = weights between first input to all 100 hidden neurons 
+0

Danke. Meine Liste ergibt sich aus dem Dumping der Gewichte eines neuronalen Netzes mit Keras list = model.layers [0] .get_weights(). – user

+0

Also verschwenden Sie die Gewichte von Ihrer Eingabeebene? Ist es ein konvolutionelles neuronales Netzwerk oder eine einfache Rückpropagation? Was ist die neuronale Netzarchitektur? Bitte bearbeite die Frage auch, weil das eine ganz andere Frage ist. – PseudoAj

+0

Ich dachte nicht, dass es Keras verwandt ist, aber vielleicht ist es. Ich habe meine Frage bearbeitet. – user