Tensorflow:使用`tf.contrib.metrics.streaming_mean_iou`

时间:2017-03-28 20:31:15

标签: tensorflow

尝试使用张量流tf.contrib.metrics.streaming_mean_iou计算联合交叉时,我收到一个奇怪的错误。
这是我以前使用的代码完全正常

tensorflow as tf
label = tf.image.decode_png(tf.read_file('/path/to/label.png'),channels=1)
label_lin = tf.reshape(label, [-1,])
weights = tf.cast(tf.less_equal(label_lin, 10), tf.int32)
mIoU, update_op = tf.contrib.metrics.streaming_mean_iou(label_lin, label_lin,num_classes = 11,weights = weights)
init = tf.local_variables_initializer()
sess.run(init)
sess.run([update_op])

然而,当我使用像这样的面具时

mask = tf.image.decode_png(tf.read_file('/path/to/mask_file.png'),channels=1)
mask_lin = tf.reshape(mask, [-1,])
mask_lin = tf.cast(mask_lin,tf.int32)
mIoU, update_op = tf.contrib.metrics.streaming_mean_iou(label_lin, label_lin,num_classes = 11,weights = mask_lin)
init = tf.local_variables_initializer()
sess.run(init)
sess.run([update_op])

在显示此错误的不规则迭代次数后,它继续失败:

*** Error in `/usr/bin/python': corrupted double-linked list: 0x00007f29d0022fd0 ***

我检查了mask_linweights的形状和数据类型。它们是一样的,所以我不能真正看到这里出了什么问题 在调用update_op不规则次数之后出现错误的事实也很奇怪。在调用多个mask_lin后,TF可能会清空sess.run()个对象? 或者这是一些TF错误?但话又说明为什么它适用于weights ......

0 个答案:

没有答案