2017-08-28 3 views
1

ich Menschen in der Regel verstehen unten verwenden Sie den Verlust und Fehler zu trainierendefinieren eigenen Verlust und klassifizieren Fehler in CNTK

ce = cross_entropy_with_softmax(z, label_var) 
pe = classification_error(z, label_var) 
trainer = Trainer(z, (ce, pe), ...) 

Können wir eigene Verluste und Fehler Methoden überschreiben oder definieren? Was wir wirklich brauchen, ist Gewichte hinzuzufügen, wenn wir Verlust und Fehler berechnen. Zum Beispiel haben wir 4 Klassen, es ist wichtig (mehr Gewicht), die erste Klasse nicht als andere Klasse und umgekehrt falsch zu klassifizieren, aber nicht so wichtig (weniger Gewicht), wenn sie unter den letzten 3 Klassen falsch klassifiziert. Was ist der beste Weg, das in CNTK zu behandeln?

Antwort

1

Ja, jeder CNTK Ausdruck ist ein gültiger Verlust oder Fehler: Hier Kreuzentropie:

ce = C.negate (C.reduce_sum (C.element_times (Target, C.log (Prädiktion)) = Achse -1))

+0

Das ist großartig! Ich habe Mühe herauszufinden, wie ich die Gewichte zu dem von Ihnen bereitgestellten Beispiel hinzufügen kann. Ich denke, NxN-Array von error_weights zu erstellen, wobei N die Anzahl der Klassen ist. Ich bin mir jedoch nicht sicher, wie ein gültiger Verlust mit error_weights, ResNet Model, z und input label_var erstellt werden kann, was cross_entropy_with_softmax (z, label_var) ähnelt. Wäre es möglich, mir einen einfachen Beispielcode oder einige Anweisungen zu geben, denen ich folgen kann? Vielen Dank! –

+0

Ich denke, ich kann Methode unten erstellen, wenn ich Ausgabe von Modell z erhalten kann. Gibt es überhaupt eine Vorhersage vom Modell? def my_criterion (z, Ziel): Vorhersage = get_from_model (z) Verlust = calculate_loss_with_weights (Vorhersage, Ziel) Rückflussdämpfung –

Verwandte Themen