Реализация сигмоидальной функции в python - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь реализовать простую нейронную сеть для функции XOR. Я использую функцию активации Sigmoid. Код для сигмоидальной функции:

def ActivationFunction(a)
    e = 2.671                   # Sigmoid Function
    expo = e ** a
    val = expo / (1 + expo)
    return val

Моя проблема в том, что эта функция всегда возвращает значение от 0,7 до 0,8. Эта проблема показывает основной эффект в процессе вывода.

Любые предложения будут оценены.

1 Ответ

0 голосов
/ 10 мая 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...