Реализация сигмоидальной функции в python
Я пытаюсь реализовать простую нейронную сеть для функции XOR. Я использую функцию активации Sigmoid. Код для сигмоидальной функции:
def ActivationFunction(a)
e = 2.671 # Sigmoid Function
expo = e ** a
val = expo / (1 + expo)
return val
Моя проблема в том, что эта функция всегда возвращает значение от 0,7 до 0,8. Эта проблема показывает основной эффект в процессе вывода.
Любые предложения будут оценены.
1 ответ
Решение
Ваша функция реализована правильно, однако значение e
это неверно.
Я бы порекомендовал импортировать math
и используя предопределенный e
постоянный оттуда.
import math
def sigmoid(x):
return 1 / (1 + math.e ** -x) # mathematically equivalent, but simpler
И, соответственно, производная:
def sigmoid_derivative(a):
return a * (1 - a)
куда a
это скрытая активация с прямого прохода.
Кроме того, я не вижу ничего плохого в вашей реализации. Так что, если вы все еще получаете значения, которые вы не ожидаете после исправления, причина проблемы лежит в другом месте.