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不是。
这样做的正确方法是什么?
答案 0 :(得分:0)
positive = tf.squeeze(positive)
negative = tf.squeeze(negative)
positive.set_shape([None])
negative.set_shape([None])
这似乎有效