2016-10-06 2 views
2

Ich bin google Cloud Machine Learning Beta - und verwenden Sie die Setup-Hypertune mit Tensorflow.Google Cloud-Maschine lernen Hyperparameter Tuning zu vermeiden Nans

In einigen der Unterläufe der Hyperparameter-Tuning habe ich Verluste zu NaNs - und das stürzt die Berechnungen - die wiederum den Hyperparameter-Tuning-Job zu stoppen.

Error reported to Coordinator: <class 'tensorflow.python.framework.errors.InvalidArgumentError'>, 
Nan in summary histogram for: softmax_linear/HistogramSummary [[Node: softmax_linear/HistogramSummary = HistogramSummary[T=DT_FLOAT, 
_device="/job:master/replica:0/task:0/cpu:0"] 
(softmax_linear/HistogramSummary/tag, softmax_linear/softmax_linear)]] 
Caused by op u'softmax_linear/HistogramSummary', defined at: File 
"/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main 

Was ist die kanonische Art, diese zu behandeln? Soll ich die Verlustfunktion schützen?

Dank

+0

Haben Sie versucht, [tf.add_check_numerics] (https://www.tensorflow.org/versions/r0.11/api_docs/python/control_flow_ops.html#add_check_numerics_ops) zu verwenden, um festzustellen, wo die Berechnung instabil wird? –

+0

Zwei Fragen: (1) ist der Verlust in Ordnung für den ersten Teil des Trainings, ein "irgendwann" geht nach Nan (2) für genau die gleichen Einstellungen der Hyperparameter, die versagen, konvergiert das Modell irgendwann, oder immer gehen zu NaN? – rhaertel80

+0

Es geht manchmal zu NaN, abhängig von den Hyperparametern. Grundsätzlich, wenn die Lernrate zu groß ist oder wenn die Anzahl der Funktionen zu hoch ist. Meine derzeitige Gegenmaßnahme besteht darin, den Erforschungsbereich für Hyperparameter-Tuning zu begrenzen. – MathiasOrtner

Antwort

1

Sie sollten die Verlustfunktion durch Überprüfung für NaNs schützen. Alle Abstürze oder Ausnahmen, die vom Programm ausgelöst werden, werden von Cloud ML als Fehler der Testversion behandelt. Wenn genügend Tests fehlschlagen, ist der gesamte Job fehlgeschlagen.

Wenn die Testversion sauber beendet wird, ohne Hyperparameterzusammenfassungen festzulegen, wird die Testversion als nicht ausführbar betrachtet und Hyperparameter, die diesen ähneln, werden wahrscheinlich nicht erneut versucht, aber es wird kein Fehler sein.

+0

Danke Chris für die Antwort. Ich werde es so schnell wie möglich versuchen. – MathiasOrtner