tensorflow应用tf.boolean_mask

时间:2017-11-29 15:27:09

标签: tensorflow

get_thread_state()

此代码出现以下错误:

  

ValueError:形状(?,32)和(?,1)不兼容

这一行:

  第138行,身体       samples_pos = tf.boolean_mask(f_anchor,positive)文件“/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/array_ops.py”,   第1157行,在boolean_mask中       shape_tensor [:ndims_mask] .assert_is_compatible_with(shape_mask)文件   “/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/tensor_shape.py”   第753行,在assert_is_compatible_with中       提高ValueError(“形状%s和%s不兼容”%(self,other))ValueError:形状(?,32)和(?,1)不兼容

所以我尝试用tf.squeeze解决它:

        # Select samples from same class
        same_match = tf.equal(match_ids, match_id)
        same_class = tf.equal(class_ids, class_id)

        positive = tf.logical_and(same_match, same_class)
        negative = tf.logical_not(positive)

        samples_pos = tf.boolean_mask(f_anchor, positive)
        samples_neg = tf.boolean_mask(f_anchor, negative)

但是输出是

  

文件“triplet.py”,第138行,正文       samples_pos = tf.boolean_mask(f_anchor,tf.squeeze(positive))文件   “/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/array_ops.py”   第1155行,在boolean_mask中       “必须指定掩模尺寸的数量,即使某些尺寸”ValueError:必须指定掩模尺寸的数量,   即使某些尺寸为无。例如。 shape = [None]没问题,但是   shape = None不是。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

positive = tf.squeeze(positive)
negative = tf.squeeze(negative)
positive.set_shape([None])
negative.set_shape([None])

这似乎有效