import tensorflow as tf
import numpy as np
lab = tf.placeholder(shape=[None, None], dtype=tf.int32)
pred= tf.placeholder(shape=[None, None], dtype=tf.int32)
iou, conf_mat = tf.metrics.mean_iou(lab, pred, num_classes=2)
sess = tf.Session()
sess.run(tf.local_variables_initializer())
with tf.control_dependencies([conf_mat]):
iou = tf.identity(iou)
_iou=sess.run(iou, {lab:[[1,1,1], [1,1,1]], pred:[[1,1,1],[1,1,1]]})
print(_iou)
print(sess.run('mean_iou/total_confusion_matrix:0'))
以上是我运行mean_iou的代码。该代码的结果是:
0.0
[[0. 0.]
[0. 6.]]
尽管混淆矩阵给出了正确的结果,但我对iou的预期得分是1.0。 当我重新运行tf.control_dependencies下面的代码时,我将混淆矩阵更新为[[0,0],[0,12]]并且iou得分为1.0。
但是当我尝试首先运行混淆矩阵的更新操作,然后分别运行iou分数时,我得到了预期的结果。
这是否意味着tensorflow会出现一些错误?