Ich möchte einen Klassifikator zwingen, nicht mit den gleichen Ergebnissen die ganze Zeit (ohne Aufsicht, so habe ich keine Ziele) zu kommen:Classifier konvergiert gegen nur eine Klasse - Erhöhung Diversity
max_indices = tf.argmax(result, 1)
cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(result, max_indices, name="cross_entropy_per_example")
cross_entropy_mean = tf.reduce_mean(cross_entropy, name="cross_entropy")
Wo:
- Ergebnis sind die Logits von Inferenz
- max_indices zurück sind somit die vorhergesagten Klassen über alle Chargen (size = matc hsize)
- cross_entropy wie hier Maßnahmen umgesetzt, wie stark das vorhergesagte Ergebnis in der Tat vorhergesagt wird (als ob einfach das Vertrauen Messung)
ich dann optimieren, um diesen Verlust zu minimieren. Grundsätzlich möchte ich, dass das Netz eine Klasse so stark wie möglich vorhersagt.
Offensichtlich konvergiert dies zu irgendeiner zufälligen Klasse und wird dann alles in dieser einen Klasse klassifizieren.
Also was ich will, ist eine Strafe hinzuzufügen, um zu verhindern, dass alle Vorhersagen in einer Charge gleich sind. Ich überprüfte die Mathematik und kam mit der Shannon Diversity als ein gutes Maß, aber ich kann dies nicht in Tensorflow implementieren. Irgendeine Idee, wie man das macht, entweder mit der angegebenen Diversitätsmaßnahme oder einem Ersatz?
Thx
Das sieht nach einer sehr vielversprechenden Idee aus. Werde versuchen, Tonit oder morgen und melden :-) Thx so weit – friesel
Hat den Trick gemacht. Vielen Dank. In tf.reduce_mean (sm, 0) geändert – friesel