Hier ist ein Auszug aus der Umsetzung von seq2seq.sequence_loss(logits, targets, weights)
, die Sie Verwendung im Code:
with ops.name_scope(name, "sequence_loss", [logits, targets, weights]):
num_classes = array_ops.shape(logits)[2]
logits_flat = array_ops.reshape(logits, [-1, num_classes])
targets = array_ops.reshape(targets, [-1])
if softmax_loss_function is None:
crossent = nn_ops.sparse_softmax_cross_entropy_with_logits(
labels=targets, logits=logits_flat)
ich glaube, der Fehler, den Sie sehen in diesem Code aus der letzten Zeile ergeben. Die Fehlermeldung ist selbsterklärend:
InvalidArgumentError: logits and labels must have the same first dimension, got logits shape [8,6714] and labels shape [2]
I.e. die Größe der ersten Dimension von logits_flat
und targets
muss gleich sein. Dies führt direkt zu Ihrer Eingabe in seq2seq.sequence_loss
: Die ersten beiden Dimensionen Ihrer targets
und logits
Variable müssen gleich sein. Also, entweder verwenden Sie nicht die gleiche Anzahl von Stapeln für die zwei Variablen oder irgendwie Ihre Sequenzlänge geändert (was aber seltsam wäre).
Könnten Sie bitte in Betracht ziehen, die relevanten Teile Ihres Codes direkt in der Post zu veröffentlichen (Links werden im Laufe der Zeit gebrochen/aktualisiert, was für zukünftige Leser nicht nützlich ist) und fügen Sie hinzu, was Sie versucht haben, das Problem zu lösen? – kaufmanu