У меня возникли проблемы с попыткой научить нейронную сеть логической функции XOR. Я уже обучил сеть с успешными результатами, используя гиперболический тангенс и ReLU в качестве функций активации (что касается ReLU, я знаю, что это не подходит для такого рода задач, но я все же хотел его протестировать). Тем не менее, я не могу заставить его работать с логистической функцией. Мое определение функции:
def logistic(data):
return 1.0 / (1.0 + np.exp(-data))
и его производная:
def logistic_prime(data):
output = logistic(data)
return output * (1.0 - output)
где np
— это имя импортированного пакета NumPy. Поскольку логика XOR использует 0 и 1, логистическая функция должна быть соответствующей функцией активации. Тем не менее, результаты, которые я получаю, близки к 0,5 во всех случаях, т. е. любая входная комбинация 0 и 1 дает значение, близкое к 0,5. Есть ли ошибка в том, что я говорю?
Не стесняйтесь спрашивать меня о большем контексте или большем количестве кода. Заранее спасибо.
logistic(data)
локальной переменной вlogistic_prime
и использовать ее дважды, а не вызывать функцию дважды. Это не имеет никакого отношения к вашей проблеме, но, по крайней мере, обучение провалится быстрее. - person jez   schedule 11.01.2017