2017-03-07 2 views
0

의미 론적 세분화를 위해 IoU 점수를 계산하기 위해 tensorflow의 inbuilt mean_iou 함수를 사용하려고합니다.tensorflow tf.metrics.mean_iou를 사용하는 방법?

내 코드는 다음과 같습니다

나는 다음과 같은 오류 추적을 얻고 그러나
#y_mask.shape == [batch_size, h * w, n_classes] 
#y_mask.shape == [batch_size, h * w, n_classes] 
iou = tf.metrics.mean_iou(tf.argmax(y_mask,2), tf.argmax(mask_,2), n_classes) 

가 :

tensorflow.python.framework.errors_impl.FailedPreconditionError: 

Attempting to use uninitialized value mean_iou/total_confusion 
_matrix 
     [[Node: mean_iou/AssignAdd = AssignAdd[T=DT_DOUBLE, _class=["loc:@mean_iou/total_confusion_matrix"], use_locking=false 
, _device="/job:localhost/replica:0/task:0/cpu:0"](mean_iou/total_confusion_matrix, mean_iou/confusion_matrix/SparseTensorDense 
Add)]] 

Caused by op u'mean_iou/AssignAdd', defined at: 
    File "sample_tf_ynet.py", line 207, in <module> 
    trainSeg() 
    File "sample_tf_ynet.py", line 166, in trainSeg 
    iou, cm_op = tf.metrics.mean_iou(tf.argmax(y_mask,2), tf.argmax(mask_,2), n_classes) 
    File "/home/meetshah1995/anaconda2/lib/python2.7/site-packages/tensorflow/python/ops/metrics_impl.py", line 782, in mean_iou 
    update_op = state_ops.assign_add(total_cm, current_cm) 
    File "/home/meetshah1995/anaconda2/lib/python2.7/site-packages/tensorflow/python/ops/gen_state_ops.py", line 75, in assign_ad 
d 
    use_locking=use_locking, name=name) 
    File "/home/meetshah1995/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 763, in a 
pply_op 
    op_def=op_def) 
    File "/home/meetshah1995/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2395, in create_op 
    original_op=self._default_original_op, op_def=op_def) 
    File "/home/meetshah1995/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1264, in __init__ 
    self._traceback = _extract_stack() 

FailedPreconditionError (see above for traceback): Attempting to use uninitialized value mean_iou/total_confusion_matrix 
     [[Node: mean_iou/AssignAdd = AssignAdd[T=DT_DOUBLE, _class=["loc:@mean_iou/total_confusion_matrix"], use_locking=false 
, _device="/job:localhost/replica:0/task:0/cpu:0"](mean_iou/total_confusion_matrix, mean_iou/confusion_matrix/SparseTensorDense 
Add)]] 

의미 분할이의 올바른 사용에 나를 인도 해주십시오.

+0

는'그 이후'tf.initialize_all_variables()를 호출 않았다 호출하여 그것을 해결? – umutto

+0

예 세션을 호출 한 직후에'sess.run (tf.global_variables_initializer())' –

답변

2

나는

with tf.Session() as sess: 

    sess.run(tf.global_variables_initializer()) 
    sess.run(tf.local_variables_initializer()) 
관련 문제