Ошибка Tensorflow NaN?

Я использую TensorFlow, и я изменил учебный пример для взятия моих изображений RGB.

Алгоритм работает безупречно из поля на новом наборе изображения, до внезапно (все еще схождение, это обычно - приблизительно 92%-я точность), это отказывает с ошибкой, что ReluGrad получил неличные значения. При отладке шоу, что ничего необычного не происходит с числами до очень внезапно по неизвестной причине, брошена ошибка. Добавление

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())

как код отладки к каждому циклу, приводит к следующему выводу:

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

Так как ни одно из моих значений не очень высоко, единственный способ, которым может произойти NaN, плохо обработанным 0/0, но так как этот учебный код не делает никаких подразделений или подобных операций, я не вижу никакое другое объяснение, чем которое это прибывает из внутреннего кода TF.

Я невежествен на том, что сделать с этим. Какие-либо предложения? Алгоритм сходится приятно, его точность на моем наборе проверки постоянно поднималась и просто достигла 92,5% при повторении 8600.

58
задан 15 November 2015 в 00:41

2 ответа

Я добавлю здесь одну из своих предыдущих проблем с NaNs. Я использовал сигмовидную функцию в качестве активации последнего слоя моей сети. Однако сигмовидная функция активации использует показательную функцию, которая будет вычислена, и я получил некоторые действительно большие числа, вводящие сигмовидное.

Это привело к бесконечным градиентам, и некоторый NaNs начал появляться.

0
ответ дан 1 November 2019 в 13:06

Я использовал Средство оценки Tensorflow, которое я верю счету на них деление на нуль и другие числовые проблемы устойчивости, и иногда получаю эту ошибку (ERROR:tensorflow:Model diverged with loss = NaN during training). Большую часть времени, когда я добираюсь, это вызвано тем, что мои исходные данные включают nan с. Так: убедитесь, что Вашим входным кадрам данных (или независимо от того, что Вы используете) не скрыли значения NaN где-нибудь в них.

0
ответ дан 1 November 2019 в 13:06

Другие вопросы по тегам:

Похожие вопросы: