Je n'arrive pas à ajouter une pénalité à binary_crossentropy. L'idée est de pénaliser la fonction de perte lorsque la moyenne des groupes d'erreurs prédéfinis dépasse un certain seuil. Voici la fonction d'assistance qui prend le masque exprimant les groupes et l'entropie déjà calculée. Il retournera simplement le nombre de fois où un seuil a été franchi pour pénaliser la fonction de perte réelle l'appelant.Problème avec la fonction de perte personnalisée dans Keras
def penalty(groups_mask, binary_crossentropy):
errors = binary_crossentropy
unique_groups = set(groups_mask)
groups_mask = np.array(groups_mask)
threshold = # whatever
c = 0
for group in unique_groups:
error_mean = K.mean(errors[(groups_mask == group).nonzero()], axis=-1)
if error_mean > threshold:
c += 1
return c
Le problème est que error_mean est pas un scalaire et je ne peux pas trouver une façon simple de le comparer à seuil.
Je peux vraiment Ne pas comprendre ce que vous voulez atteindre dans cette ligne: 'error_mean = K.mean (erreurs [(groups_mask == groupe) .nonzero()], axis = -1)' –