Сигмовидный выход из границы - PullRequest
0 голосов
/ 22 сентября 2018
def sigmoid(z):
# complete the code
z = np.asarray(z)
if z.ndim == 0:
    return(1/(1+np.exp(-z)))
else:
    d = np.array([])
    for item in z:
        d= np.append(d,1/(1+np.exp(-item)))
    return d

print (сигмоид ([(1,3), (4,30)]))

почему это возвращает [ 0.73105858 0.95257413 0.98201379 1. ], так как функция связана, например, с 0 на 1 [q= 1/1+np.exp(-30)][1] возвращает 1.0000000000000935

почему это происходит и как это исправить?например изображение странного вида вывода

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Ваша реализация сигмоида выглядит отлично.

Причина print(1 / 1 + np.exp(-30)) возврата 1.0000000000000935 связана с приоритетом оператора .

# Your example
1 / 1 + np.exp(-30)

# How it will be computed
(1 / 1) + np.exp(-30)

# What you actually wanted
1 / (1 + np.exp(-30))

PS Numpy поддерживает радиовещание .Ваша функция может быть упрощена до:

def sigmoid(z):
    z = np.asarray(z)
    return 1 / (1 + np.exp(-z))

Используйте функцию ravel , чтобы сгладить многомерный массив, если это то, что вы хотите.

0 голосов
/ 22 сентября 2018

ой правило БОДМАС.

q= 1/(1+np.exp(-30))

возвращает 0.9999999999999065

, что меньше 1

В консоли округляется до 1

...