Реализация сигмоидальной функции в 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 это скрытая активация с прямого прохода.

Кроме того, я не вижу ничего плохого в вашей реализации. Так что, если вы все еще получаете значения, которые вы не ожидаете после исправления, причина проблемы лежит в другом месте.

Другие вопросы по тегам