J'ai de la difficulté à essayer d'enseigner à un réseau de neurones la fonction logique XOR. J'ai déjà formé le réseau avec des résultats réussis en utilisant la tangente hyperbolique et ReLU comme fonctions d'activation (en ce qui concerne le ReLU, je sais que ce n'est pas approprié pour ce genre de problème, mais je voulais quand même le tester). Pourtant, je ne peux pas le faire fonctionner avec le logistic function. Ma définition de la fonction est:Mauvaise classification des fonctions logistiques
def logistic(data):
return 1.0/(1.0 + np.exp(-data))
et son dérivé:
def logistic_prime(data):
output = logistic(data)
return output * (1.0 - output)
où np
est le nom donné au package importé NumPy. Comme la logique XOR utilise des 0 et des 1, la fonction logistique devrait être une fonction d'activation appropriée. Cependant, les résultats obtenus sont proches de 0,5 dans tous les cas, c'est-à-dire que toute combinaison d'entrée de 0 et de 1 produit une valeur proche de 0,5. Y a-t-il une erreur dans ce que je dis?
N'hésitez pas à me demander plus de contexte ou plus de code. Merci d'avance.
Vous pouvez affecter la sortie de 'logistic (data)' à une variable locale dans 'logistic_prime' et l'utiliser deux fois, plutôt que d'appeler deux fois la fonction. Cela n'a rien à voir avec votre problème, mais au moins l'entraînement échouerait plus rapidement. – jez