Merge pull request #9 from nagadomi/fix_inf

Fix categorical_crossentropy/binary_crossentropy with NaN value
This commit is contained in:
fchollet 2015-03-29 20:46:35 -07:00
commit 610cebd2f1

@ -2,6 +2,8 @@ import theano
import theano.tensor as T
import numpy as np
epsilon = 1.0e-15
def mean_squared_error(y_true, y_pred):
return T.sqr(y_pred - y_true).mean()
@ -17,9 +19,11 @@ def hinge(y_true, y_pred):
def categorical_crossentropy(y_true, y_pred):
'''Expects a binary class matrix instead of a vector of scalar classes
'''
y_pred = T.clip(y_pred, epsilon, 1.0 - epsilon)
return T.nnet.categorical_crossentropy(y_pred, y_true).mean()
def binary_crossentropy(y_true, y_pred):
y_pred = T.clip(y_pred, epsilon, 1.0 - epsilon)
return T.nnet.binary_crossentropy(y_pred, y_true).mean()
# aliases
@ -38,4 +42,4 @@ def to_categorical(y):
Y = np.zeros((len(y), nb_classes))
for i in range(len(y)):
Y[i, y[i]] = 1.
return Y
return Y