Я хочу реализовать пользовательскую функцию потерь в keras на основе binary_crossEntropy. У меня вопрос о форме выходного тнесора Keras.losses.binary_crossentropy. Я ожидаю, что это должен быть одномерный тензор с длиной batch_size. но он возвращает тензор с формой [размер партии, классы] с одинаковой суммой потерь в каждой строке для всех классов. следует ли мне вручную использовать max по строкам? Есть ли способ лучше? и почему результат K.binary_crossentropy не является тензором 1d? это связано с математическими понятиями?
def custom_loss(y_true, y_pred):
loss_tensor = K.binary_crossentropy(y_true, y_pred)
# return K.max(loss_tensor, axis=1)
return loss_tensor
# model.compile(loss={'classifier':'kullback_leibler_divergence'},optimizer='Nadam',metrics=['acc'])
tmp_y_true = tf.constant([[0.0, 1.0], [1.0, 0.0]])
tmp_y_pred = tf.constant([[0.8, 0.2], [0.75, 0.25]])
output = custom_loss(tmp_y_true, tmp_y_pred)
tmp_out = K.eval(output)