Алгоритм CNN прогнозирует значение 1,0, и, таким образом, функция кросс-энтропийной стоимости дает предупреждение о делении на ноль - PullRequest
0 голосов
/ 03 июня 2019

Я использую CNN для двоичной классификации.

Пока функция кросс-энтропии вычисляется по коду:

(-1 / m) * np.sum(np.multiply(Y, np.log(AL)) + np.multiply(1 - Y, np.log(1 - AL)))

когда алгоритм прогнозирует значение 1,0, эта функция стоимости выдает предупреждение делить на ноль. Как с этим бороться? Или есть какой-нибудь способ избежать предсказания, чтобы он стал точно 1,0, как любой навык предварительной обработки?

Когда я использую более высокую числовую точность, она работает нормально. Но мне все еще интересно знать об этом.

1 Ответ

0 голосов
/ 03 июня 2019

Похоже, что попытка / исключение должны обрабатывать ошибку деления на ноль.

try:
    my_var = (-1 / m) * np.sum(np.multiply(Y, np.log(AL)) + np.multiply(1 - Y, np.log(1 - AL)))
except ZeroDivisionError:
    print("I tried to calculate the result, but I got a divide-by-zero error. Maybe you need to use higher precision.")
    exit()
...