Я пытаюсь использовать функцию потери трофической кроссентропии внутри кератов. Ошибка:
Incompatible shapes: [512,184,55] vs. [512,55]
функция потери:
def keras_binary_cross_entropy_with_logits(tgt, pred):
return tf.nn.sigmoid_cross_entropy_with_logits(labels=tgt, logits=pred)
Идея состоит в том, чтобы сделать многослойную классификацию, где цель состоит из нескольких меток в двоичном виде. Y_true имеет форму [batch_size, label_vocab_length], а y_pred имеет форму [batch_size, sequnece_length, label_vocab_length]. В приведенном выше примере y_true =[512,55]
и y_pred=[512,184,55
.
Полная ошибка
InvalidArgumentError: Incompatible shapes: [512,184,55] vs. [512,55]
[[{{node training_2/RMSprop/gradients/loss_5/dense_output_loss/logistic_loss/mul_grad/BroadcastGradientArgs}} = BroadcastGradientArgs[T=DT_INT32, _class=["loc:@train...ad/Reshape"], _device="/job:localhost/replica:0/task:0/device:CPU:0"](training_2/RMSprop/gradients/loss_5/dense_output_loss/logistic_loss/mul_grad/Shape, training_2/RMSprop/gradients/loss_5/dense_output_loss/logistic_loss/mul_grad/Shape_1)]]
Что мне здесь не хватает?