Mein aktueller Code mit sparse_softmax_cross_entropy
funktioniert einwandfrei.Tensorflow - Die Verwendung von tf.losses.hinge_loss führt zu Inkompatiblen Shapes
loss_normal = (
tf.reduce_mean(tf.losses
.sparse_softmax_cross_entropy(labels=labels,
logits=logits,
weights=class_weights))
)
aber wenn ich versuche, das verwenden hinge_loss
:
loss_normal = (
tf.reduce_mean(tf.losses
.hinge_loss(labels=labels,
logits=logits,
weights=class_weights))
)
Es hat einen Fehler gemeldet sagen:
ValueError: Shapes (1024, 2) and (1024,) are incompatible
Der Fehler dieser Funktion in der losses_impl.py
Datei entstanden zu sein scheint :
with ops.name_scope(scope, "hinge_loss", (logits, labels)) as scope:
...
logits.get_shape().assert_is_compatible_with(labels.get_shape())
...
modifizierte ich meinen Code wie unten nur 1 Spalte des Tensor Logits extrahieren:
loss_normal = (
tf.reduce_mean(tf.losses
.hinge_loss(labels=labels,
logits=logits[:,1:],
weights=class_weights
))
)
Aber es meldet noch einen ähnlichen Fehler:
ValueError: Shapes (1024, 1) and (1024,) are incompatible.
Kann warum funktioniert mein Code helfen jemand bitte darauf hin, gut mit sparse_softmax_cross_entropy
Verlust aber nicht hinge_loss
?
Dank Maxim. Ich bin mir nicht sicher, ob ich den zweiten Ansatz verstehe, indem ich die Logiken entlang der Achse 1 summiere. Ich werde beide Ansätze morgen versuchen und ein Update bereitstellen. Vielen Dank. – Allen