2017-10-21 70 views
4

Je souhaite utiliser la fonction de perte définie dans keras pour calculer la valeur de perte manuellement. Par exemple:Comment trouver les valeurs de perte en utilisant keras?

from keras.losses import binary_crossentropy 
error=binary_crossentropy([1,2,3,4],[6,7,8,9]) 

me donne erreur

AttributeError: 'list' object has no attribute 'dtype'. 

manière similaire, je veux utiliser une autre fonction de perte keras. J'ai mes listes/tableaux y_pred et y_true.

+0

Les tableaux utilisent de numpy au lieu de listes – Skyy2010

+0

fait, converti ma liste tableau numpy mais je reçois ce 'AttributeError: objet « numpy.dtype » n'a pas d'attribut « base_dtype''. –

Répondre

4

Vous pouvez utiliser K.variable() pour envelopper les entrées et utiliser K.eval() pour obtenir la valeur.

from keras.losses import binary_crossentropy 
from keras import backend as K 
y_true = K.variable(np.array([[1], [0], [1], [1]])) 
y_pred = K.variable(np.array([[0.5], [0.6], [0.7], [0.8]])) 
error = K.eval(binary_crossentropy(y_true, y_pred)) 

print(error) 
[ 0.69314718 0.91629082 0.35667494 0.22314353] 
+0

Cela fonctionne. Merci –

0

Pour moi, cela fonctionne parfaitement bien:

>>> import numpy as np 
>>> from keras.losses import binary_crossentropy 
>>> a = np.array([1,2,3,4]) 
>>> b = np.array([5,6,7,8]) 
>>> error = binary_crossentropy(a,b) 
>>> error 
mean 
+1

Ce ne fonctionne pas pour moi. Obtenir 'AttributeError: l'objet 'numpy.dtype' n'a pas d'attribut 'base_dtype' ' –

+0

Avez-vous les dernières versions stables de numpy et keras? Quel vésion de python utilisez-vous? – Skyy2010

+0

keras version = 2.0.8 et python 2.7.12 –