2017-02-23 4 views
5

Ich betreibe ein einfaches Feed-Forward-Netzwerk mit Keras. Mit nur einer versteckten Ebene möchte ich einige Rückschlüsse auf die Relevanz jedes Inputs für jeden Output ziehen und möchte die Gewichte extrahieren.Wie Bias Gewichte in Keras sequenzielles Modell zu extrahieren?

Dies ist das Modell:

for layer in model.layers: 
    weights = layer.get_weights() 


weights = np.array(weights[0])  #this is hidden to output 
first = model.layers[0].get_weights() #input to hidden 
first = np.array(first[0]) 

Leider sind die Verzerrungen bekommen ich nicht Spalten in den Matrizen, die ich kenne, Keras setzt automatisch in:

def build_model(input_dim, output_dim): 
    n_output_layer_1 = 150 
    n_output = output_dim 
    model = Sequential() 
    model.add(Dense(n_output_layer_1, input_dim=input_dim, activation='relu')) 
    model.add(Dropout(0.25)) 
    model.add(Dense(n_output)) 

das Gewicht Ich schrieb zu extrahieren es.

Wissen Sie, wie Sie die Verzerrungen Gewichte abrufen?

Vielen Dank im Voraus für Ihre Hilfe!

Antwort

10

get_weights() für eine dichte Ebene gibt eine Liste von zwei Elementen zurück, das erste Element enthält die Gewichtungen und das zweite Element enthält die Verzerrungen. So können Sie einfach tun:

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

Beachten Sie, dass Gewichte und Vorurteile sind bereits numpy Arrays.

+0

Danke Matias, habe das nicht bemerkt! –

+0

Entschuldigung für die Störung, welche Art von Aktivierungsfunktion hat die Ausgabe in meinem Modell? Gibt es eine Standardauswahl oder ist es nur eine gewichtete Summe der Aktivierungen versteckter Neuronen? –