Numpy где возвращается ошибка, где не должно быть - PullRequest
0 голосов
/ 24 апреля 2020

Я работаю с нейронной сетью с нуля, и когда я пытаюсь реализовать стабильную сигмовидную функцию, numpy, где, кажется, ведет себя странно. Обе функции здесь возвращают RuntimeWarning: переполнение, обнаруженное в exp :

#Original Function

def sigmoid(x):
    return np.where(x >= 0, 1 / (1 + np.exp(-x)), np.exp(x) / (1 + np.exp(x)))

#Dummy function that is also misbehaving

def sigmoid(x):
    return np.where(x>=0, 1 / (1 + np.exp(-x)), 0)

Это результат:

enter image description here

1 Ответ

2 голосов
/ 24 апреля 2020

Это предупреждение во время выполнения, а не ошибка. Ваш код работает отлично. Предупреждение связано с тем, что вы пытаетесь вычислить exp(-(-1000)), которое переполняет поплавковую емкость (по сути, возвращает inf). Поскольку у вас есть это в знаменателе, я бы не беспокоился об этом, потому что он возвращает 1/inf = 0.

...