2015-11-09 2 views
3

Dans l'exemple fourni à http://www.tensorflow.org/get_started si je multiplie l'entrée par 2Comment gérer les entrées en dehors de la gamme 0-1 dans le tensorflow?

x_data = np.float32(np.random.rand(2, 100))*2 

j'obtenir une sortie non-sens, alors que j'attendu pour obtenir la même solution.

0 [[ -67.06586456 -109.13352203]] [-7.67297792] 
20 [[ nan nan]] [ nan] 
40 [[ nan nan]] [ nan] 
60 [[ nan nan]] [ nan] 
80 [[ nan nan]] [ nan] 
100 [[ nan nan]] [ nan] 
120 [[ nan nan]] [ nan] 
140 [[ nan nan]] [ nan] 
160 [[ nan nan]] [ nan] 
180 [[ nan nan]] [ nan] 
200 [[ nan nan]] [ nan] 

COMMEnT tensorflow gérer les entrées qui ne sont pas dans la gamme 0-1?

EDIT: L'utilisation de AdagradOptimizer fonctionne sans problème.

+1

Vous avez probablement divergé à l'infini, et puis vous soustrayez l'infini de l'infini et obtenez nan –

Répondre

8

Le problème est que l'exemple utilise un taux d'apprentissage très agressif:

optimizer = tf.train.GradientDescentOptimizer(0.5) 

Cela rend un apprentissage plus rapide, mais cesse de fonctionner si vous changez le problème un peu. serait plus typique Un taux d'apprentissage de 0.01:

optimizer = tf.train.GradientDescentOptimizer(0.01) 

Maintenant, votre modification fonctionne très bien. :)