2010-09-05 19 views
2

J'essaie d'écrire un réseau neuronal simple qui peut fournir des poids pour, disons, la fonction y = x. Voici mon code: http://codepad.org/rPdZ7fOzNeural Network, python

Comme vous pouvez le voir, le niveau d'erreur ne baisse jamais vraiment beaucoup. J'ai essayé de changer l'élan et le taux d'apprentissage, mais cela n'a pas aidé beaucoup. Est-ce que mon nombre d'entrée, caché et de sortie est correct pour ce que je veux faire? Si non, que devrait-il être? Si oui, quoi d'autre pourrait être faux?

Répondre

2

Vous tentez de former le réseau pour donner les valeurs de sortie 1,2,3,4 autant que j'ai compris. Pourtant, à la sortie, vous utilisez un sigmoïde (math.tanh(..)) dont les valeurs sont toujours entre -1 et 1.

Donc la sortie de votre réseau de neurones est toujours entre -1 et 1 et donc vous obtenez toujours une grosse erreur en essayant pour adapter les valeurs de sortie en dehors de cette plage.

(je viens de vérifier que lorsque mise à l'échelle de vos valeurs d'entrée et de sortie de 0,1, il semble y avoir un progrès de la formation agréable et je reçois à la fin:

error 0.00025 

)

Le Neural Network vous L'utilisation est utile si vous voulez faire classification (par exemple, affecter le point de données à la classe A si la sortie NN est < 0 ou B si elle est> 0). Il semble que ce que vous voulez faire est régression (ajustement d'une fonction à valeur réelle).

Vous pouvez supprimer le sigmoïde sur le noeud de sortie, mais vous devrez modifier légèrement votre procédure de rétropropagation pour en tenir compte.