2017-10-21 158 views
4

我想使用keras中定义的各种损失函数来手动计算损失值。例如:如何使用keras找到损失值?

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

给我的错误,我想使用其他keras损失函数

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

类似的方式。我有我的y_pred和y_true列表/数组。

+0

使用numpy的数组,而不是完成,其中列出 – Skyy2010

+0

,转换我的名单numpy的数组,但我得到这个'AttributeError的:“numpy.dtype”对象有没有属性“base_dtype''。 –

回答

4

您可以使用K.variable()来包装投入和使用K.eval()来获取值。

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

它的工作原理。谢谢 –

0

对于我这个工作完全正常:

>>> 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

它不适合我。获得'AttributeError:'numpy.dtype'对象没有属性'base_dtype' ' –

+0

你有最新的稳定版本的numpy和keras?你使用哪种python vesion? – Skyy2010

+0

keras版本= 2.0.8和python 2.7.12 –

相关问题