Если вы хотите использовать только classes
, который является первым выходом, для расчета потерь, тогда вы можете установить опцию loss_weights
(https://keras.io/models/model/) при компиляции.
model.compile(...., loss_weights=[1.0, 0.0])
Обратите также внимание, что потери рассчитываются для каждого выхода отдельно, а затем усредняются (с равным весом по умолчанию) по выходам, чтобы получить единственную метрику потерь. Таким образом, y_pred[0]
означает не classes
, а первый элемент classes
и x
.
РЕДАКТИРОВАТЬ.
, если это первый элемент классов и x, какой будет форма y_pred [0]? бит запутан здесь
Обе! Keras вычисляет потери для classes
и x
отдельно, а затем принимает (взвешенное) среднее значение. Таким образом, если функция потерь определяется как return keras.losses.binary_crossentropy(y_true, y_pred[0])
, как в вопросе, keras пытается вычислитьпотери с classes_true
против class_pred[0]
и с x_true
против x_pred[0]
, что приводит к ошибке несоответствия формы.