2016-01-02 5 views
0

Si la sortie est une fonction tanh, je reçois un nombre compris entre -1 et 1.Comment convertir un RNN en un réseau de régression?

Comment puis-je faire pour convertir la sortie à l'échelle de mes valeurs y (ce qui arrive à environ 15 à droite maintenant, mais varie en fonction des données)? Ou suis-je limité à des fonctions qui varient dans une certaine plage de portée connue ...?

Répondre

1

Supprimez simplement le tanh, et votre sortie sera un nombre illimité. Votre fonction d'erreur devrait probablement être une erreur au carré.

Vous devrez peut-être modifier le calcul du gradient pour votre support arrière, si cela n'est pas fait automatiquement par votre infrastructure.

Éditer pour ajouter: Vous voulez certainement garder le tanh (ou une autre non-linéarité) entre les connexions récurrentes, alors retirez-le seulement pour la connexion de sortie.

+0

Ah, bien. Et si j'avais un réseau LSTM, j'aurais besoin d'une couche au-dessus du LSTM, sans fonction d'activation? – bordeo

+0

Bien, exactement. – larspars

+0

ne voulait pas laisser cette pendaison si longtemps. – bordeo

0

Dans la plupart des RNN pour la classification, la plupart des gens utilisent une couche softmax au-dessus de leurs couches LSTM ou tanh donc je pense que vous pouvez remplacer le softmax avec juste une couche de sortie linéaire. C'est ce que font certaines personnes pour les réseaux de neurones réguliers ainsi que pour les réseaux de neurones convolutionnels. Vous aurez toujours la non-linéarité des couches cachées, mais vos sorties ne seront pas limitées dans une certaine plage telle que -1 et 1. La fonction de coût serait probablement l'erreur au carré comme les larspars mentionnés.