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