Sensorflow NaN Fehler?

Ich benutze TensorFlow und habe dasLernprogram Beispiel, um meine RGB-Bilder aufzunehmen.

Der Algorithmus funktioniert beim neuen Bildsatz sofort einwandfrei, bis er plötzlich (immer noch konvergierend, normalerweise mit einer Genauigkeit von 92%) mit dem Fehler abstürzt, dass ReluGrad nicht-endliche Werte empfangen hat. Das Debuggen zeigt, dass mit den Zahlen nichts Ungewöhnliches passiert, bis sehr plötzlich aus unbekannten Gründen der Fehler ausgelöst wird. @ Hinzufüg

print "max W vales: %g %g %g %g"%(tf.reduce_max(tf.abs(W_conv1)).eval(),tf.reduce_max(tf.abs(W_conv2)).eval(),tf.reduce_max(tf.abs(W_fc1)).eval(),tf.reduce_max(tf.abs(W_fc2)).eval())
print "max b vales: %g %g %g %g"%(tf.reduce_max(tf.abs(b_conv1)).eval(),tf.reduce_max(tf.abs(b_conv2)).eval(),tf.reduce_max(tf.abs(b_fc1)).eval(),tf.reduce_max(tf.abs(b_fc2)).eval())

ls Debug-Code für jede Schleife wird die folgende Ausgabe ausgegeben:

Step 8600
max W vales: 0.759422 0.295087 0.344725 0.583884
max b vales: 0.110509 0.111748 0.115327 0.124324
Step 8601
max W vales: 0.75947 0.295084 0.344723 0.583893
max b vales: 0.110516 0.111753 0.115322 0.124332
Step 8602
max W vales: 0.759521 0.295101 0.34472 0.5839
max b vales: 0.110521 0.111747 0.115312 0.124365
Step 8603
max W vales: -3.40282e+38 -3.40282e+38 -3.40282e+38 -3.40282e+38
max b vales: -3.40282e+38 -3.40282e+38 -3.40282e+38 -3.40282e+38

Da keiner meiner Werte sehr hoch ist, kann ein NaN nur durch eine schlecht gehandhabte 0/0 auftreten. Da dieser Lernprogrammcode jedoch keine Unterteilungen oder ähnliche Vorgänge ausführt, sehe ich keine andere Erklärung als die folgende aus dem internen TF-Code.

Ich weiß nicht, was ich damit anfangen soll. Irgendwelche Vorschläge? Der Algorithmus konvergiert sehr gut, die Genauigkeit meines Validierungssatzes stieg stetig an und erreichte bei Iteration 8600 gerade mal 92,5%.

Antworten auf die Frage(20)

Ihre Antwort auf die Frage