2017-01-07 2 views
1

RPi3에서 시작점을 재교육하려고합니다. 이 히스토그램 오류 메시지가 나타납니다. 시작 재교육 문제 "요약 히스토그램에 대한 요약 : 히스토그램 요약"

python /home/pi/Tensorflow/tensorflow/tensorflow/examples/image_retraining/retrain.py --bottleneck_dir=/home/pi/Documents/Machine\ Learning/Inception/tf_files/bottlenecks --how_many_training_steps 500 --model_dir=/home/pi/Documents/Machine\ Learning/Inception/tf_files/inception --output_graph=/home/pi/Documents/Machine\ Learning/Inception/tf_files/retrained_graph.pb --output_labels=/home/pi/Documents/Machine\ Learning/Inception/tf_files/retrained_labels.txt --image_dir /home/pi/Documents/Machine\ Learning/Inception/Retraining_Images 
Looking for images in 'Granny Smith Apple' 
Looking for images in 'Red Delicious' 
100 bottleneck files created. 
200 bottleneck files created. 
2017-01-07 11:30:22.180768: Step 0: Train accuracy = 56.0% 
2017-01-07 11:30:22.242166: Step 0: Cross entropy = nan 
2017-01-07 11:30:22.850969: Step 0: Validation accuracy = 50.0% 
Traceback (most recent call last): 
    File "/home/pi/Tensorflow/tensorflow/tensorflow/examples/image_retraining/retrain.py", line 938, in <module> 
    tf.app.run() 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 30, in run 
    sys.exit(main(sys.argv[:1] + flags_passthrough)) 
    File "/home/pi/Tensorflow/tensorflow/tensorflow/examples/image_retraining/retrain.py", line 887, in main 
    ground_truth_input: train_ground_truth}) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 717, in run 
    run_metadata_ptr) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 915, in _run 
    feed_dict_string, options, run_metadata) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 965, in _do_run 
    target_list, options, run_metadata) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 985, in _do_call 
    raise type(e)(node_def, op, message) 
tensorflow.python.framework.errors.InvalidArgumentError: Nan in summary histogram for: HistogramSummary 
    [[Node: HistogramSummary = HistogramSummary[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"](HistogramSummary/tag, final_result)]] 

Caused by op u'HistogramSummary', defined at: 
    File "/home/pi/Tensorflow/tensorflow/tensorflow/examples/image_retraining/retrain.py", line 938, in <module> 
    tf.app.run() 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 30, in run 
    sys.exit(main(sys.argv[:1] + flags_passthrough)) 
    File "/home/pi/Tensorflow/tensorflow/tensorflow/examples/image_retraining/retrain.py", line 846, in main 
    bottleneck_tensor) 
    File "/home/pi/Tensorflow/tensorflow/tensorflow/examples/image_retraining/retrain.py", line 764, in add_final_training_ops 
    tf.histogram_summary(final_tensor_name + '/activations', final_tensor) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/logging_ops.py", line 100, in histogram_summary 
    tag=tag, values=values, name=scope) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_logging_ops.py", line 100, in _histogram_summary 
    name=name) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.py", line 749, in apply_op 
    op_def=op_def) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2380, in create_op 
    original_op=self._default_original_op, op_def=op_def) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1298, in __init__ 
    self._traceback = _extract_stack() 

InvalidArgumentError (see above for traceback): Nan in summary histogram for: HistogramSummary 
    [[Node: HistogramSummary = HistogramSummary[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"](HistogramSummary/tag, final_result)]] 

나는 this 을 읽은 후 retrain.pymerged = tf.merge_all_summaries()을 변경하려하지만 일을 일부러.

또한, 나는 재교육을 시도 처음으로, 나는 오류를 타격하기 전에 단계 0 다른 결과를 얻었다 :

2017-01-07 11:13:36.548913: Step 0: Train accuracy = 89.0% 
2017-01-07 11:13:36.555770: Step 0: Cross entropy = 0.590778 
2017-01-07 11:13:37.052190: Step 0: Validation accuracy = 76.0% 
+0

문제를 해결해주세요. 나는 같은 문제가있어 해결책을 찾을 수 없다. – Gegenwind

답변

3

이가 NaN의 값이 어디에서 오는지 알고 도움이 될 수 있다는 것 같네요. 이를 위해, tensorflow 디버거 (tfdbg)를 살펴 걸릴 다음 sess.run()는 교육 및 평가를 위해 일 때 retrain.py에서 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/how_tos/debugger/index.md

을, 당신은 당신이 그런

from tensorflow.python import debug as tf_debug 

# ... 
# In def main(_) 
if debug: 
    sess = tf_debug.LocalCLIDebugWrapperSession(sess) 
    sess.add_tensor_filter("has_inf_or_nan", tf_debug.has_inf_or_nan) 

# ... 

같은 변화를 만들 수 있습니다 디버거의 명령 줄 인터페이스로 들어갑니다.

텐서 필터 has_inf_or_nan 치면
tfdbg> run -f has_inf_or_nan 

이 인터페이스는 당신이 포함 텐서의 목록을 제공합니다 다음 tfdbg> 프롬프트에서, 당신은 어떤 NaN이 나 무한대가 TensorFlow 그래프에 표시 될 때까지 코드를 실행하도록하는 명령을 입력 할 수 있습니다 시간 순서대로 정렬 된 Infs 또는 Nans. 맨 위에있는 것은 "범인", 즉 나쁜 수치 값을 처음 생성 한 사람이어야합니다. 다음 tfdbg을 사용할 수 있습니다, 그 이름이 node_1라고 자사의 입력을보고 명령 및 노드 속성 :

tfdbg> li -r node_1 
tfdbg> ni -a node_1 
+0

참고 : tfdbg 디버거는 최근 추가 된 기능이므로 (2016 년 12 월 경)이 기능에 액세스하려면 TensorFlow 포크를 동기화하거나 최신 바이너리를 다운로드해야 할 수도 있습니다. – scai

+0

파이썬 코드에 추가해야 할 플래그가 있습니까? 디버그 :''NameError : 전역 이름 'debug'is not defined '오류는'--debug'를 추가 했음에도 불구하고 throw됩니다. TF.11을 사용하고 있습니다. – user7388993

+0

@ user7388993 "디버그"플래그는 예제 일뿐입니다. 파이썬 코드에서 상수로 정의 할 수 있습니다. 스위치를 원하지 않는다면, "if debug"라인을 사용하지 않고 그냥 할 수 있습니다. – scai

1

당신이 tf.contrib.learn을 사용하고 다음 사용하는 것이 좋습니다 경우

debug_hook = tf_debug.LocalCLIDebugHook() 
debug_hook.add_tensor_filter("has_inf_or_nan", tf_debug.has_inf_or_nan) 
hooks = [debug_hook] 
... 
classifier.fit(..., monitors=hooks)