2017-10-20 24 views
1

J'écris une fonction de perte personnalisée keras où je veux passer à cette fonction la suivante: y_true, y_pred (ces deux seront transmis automatiquement de toute façon), poids d'une couche à l'intérieur du modèle, et une constante.Keras Fonction de perte personnalisée pour passer des arguments autres que y_true et y_pred

Quelque chose comme ci-dessous:

def Custom_loss(y_true, y_pred, layer_weights, val = 0.01): 
    loss = mse(y_true, y_pred) 
    loss += K.sum(val, K.abs(K.sum(K.square(layer_weights), axis=1))) 
    return loss 

Mais la mise en œuvre ci-dessus me donne l'erreur. Comment puis-je y parvenir en keras?

Répondre

3
def customLoss(layer_weights, val = 0.01): 

    def lossFunction(y_true,y_pred):  
     loss = mse(y_true, y_pred) 
     loss += K.sum(val, K.abs(K.sum(K.square(layer_weights), axis=1))) 
     return loss 

    return lossFunction 

model.compile(loss=customLoss(weights,0.03), optimizer =..., metrics = ...)