2017-05-17 1 views
1

Ich implementiere derzeit ein Keras-Modell mit mehreren Ein- und Ausgängen. Die Anzahl der Ein- und Ausgänge ist identisch.Keras: Abrufen der Genauigkeit für jeden Modellausgang

Der Ausgabe-Teil meines Codes sieht wie folgt aus. Es enthält für-Schleife, wie es soll ein dynamisches, Multi-Stream-Modell sein:

... 
for s in range(NUM_STREAMS): 
     x[s] = Dense3(x[s]) 
     logits.append(Softmax0(x[s])) 

model = Model(
    inputs=[inp_ele for inp_ele in inp], 
    outputs=[logit for logit in logits] 
) 
sgd = optimizers.SGD(lr=0.1) 
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy']) 

Jetzt möchte ich die Genauigkeit für jede logit innerhalb des Modells abzurufen. Allerdings gibt print(model.metrics_names) Anwendung mir die folgenden (es ist ein 3-Stream-Modell in diesem Beispiel):

['loss', 'activation_8_loss', 'activation_8_loss', 'activation_8_loss', 
'activation_8_acc', 'activation_8_acc', 'activation_8_acc'] 

Nun, wenn ich versuche, die Geschichte Objekt aus der model.fit Funktion abrufen, es gibt mir ein

KeyError: [-1] #Instead of the -1, it is respectively and of the lower list-indecies 

Ich habe versucht, die Genauigkeit mit den folgenden Methoden abrufen, und keiner von ihnen funktioniert.

print(history.history['activation_8_acc']) 
print(history.history['activation_8_acc'][-1]) 
print(history.history[-1]) 

Wie kann ich die individuellen Genauigkeiten abrufen? Oder wenn es möglich ist, wie kann ich die mittlere Genauigkeit für dieses Modell abrufen?

Antwort

1

habe ich eine Linie print(history.history), die ausgegeben:

'activation_8_loss_3': [1.3723259580135345], 'loss': [4.1188646435737608], 'activation_8_loss_1': [1.3680831426382065], 'activation_8_loss_2': [1.37177708029747], 'activation_8_acc_1': [0.46729998335242273] ... 

das ergab, dass print(model.metrics_names) nicht die ganze Geschichte erzählt.

Verwandte Themen