In Tensorflow habe ich ein Klassifikatornetzwerk und unausgewogene Trainingsklassen. Aus verschiedenen Gründen kann ich Resampling nicht verwenden, um die unsymmetrischen Daten zu kompensieren. Daher bin ich gezwungen, das Ungleichgewicht auf andere Weise zu kompensieren, indem ich die Logits mit Gewichten multipliziere, die auf der Anzahl der Beispiele in jeder Klasse basieren. Ich weiß, dass dies nicht der bevorzugte Ansatz ist, aber Resampling ist keine Option. Mein Trainingsverlust ist tf.nn.softmax_cross_entropy_with_logits
(ich könnte auch versuchen tf.nn.sparse_softmax_cross_entropy_with_logits
). Die Tensorflow docs enthält die folgende in der Beschreibung dieser ops:Tensorflow: skalierte Logits mit Kreuzentropie
ACHTUNG: Diese op unscaled Logits erwartet, da es eine softmax auf Logits intern für Effizienz führt. Rufen Sie diesen Befehl nicht mit dem -Ausgang von softmax auf, da dies zu falschen Ergebnissen führt.
Meine Frage: Ist die Warnung nur oben unter Bezugnahme auf die Skalierung von softmax getan, oder es bedeutet jede logit Skalierung jeglicher Art verboten ist? Wenn letzteres, dann ist meine Klassen-Rebalancing-Logit-Skalierung, die fehlerhafte Ergebnisse verursacht?
Danke,
Ron
Neugierig, ob Sie eine Lösung gefunden haben, die für Sie arbeitet? Ich stehe vor einer ähnlichen Herausforderung und frage mich, wie es anderen gelungen ist, damit umzugehen? –
Ich habe versucht, die Kreuzentropie für jedes Beispiel mit dem Gewicht der wahren Klasse für das Beispiel zu multiplizieren, mit fragwürdigen Ergebnissen. Ich habe versucht, die Daten neu zu erfassen. –