Ваша реализация сигмоида выглядит отлично.
Причина 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 , чтобы сгладить многомерный массив, если это то, что вы хотите.