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.

Ответы на вопрос(10)

Ваш ответ на вопрос