1. 用tf.boolean_mask方法
if is_training:
# if all is difficult, then keep the first one
isdifficult_mask = tf.cond(tf.count_nonzero(isdifficult, dtype=tf.int32) < tf.shape(isdifficult)[0],
lambda: isdifficult < tf.ones_like(isdifficult),
lambda: tf.one_hot(0, tf.shape(isdifficult)[0], on_value=True, off_value=False,
dtype=tf.bool))
glabels_raw = tf.boolean_mask(glabels_raw, isdifficult_mask)
gbboxes_raw = tf.boolean_mask(gbboxes_raw, isdifficult_mask)
注:
tf.boolean_mask(tensor,mask,name='boolean_mask',axis=None)
# 1-D example
tensor = [0, 1, 2, 3]
mask = np.array([True, False, True, False])
boolean_mask(tensor, mask) # [0, 2]
# 2-D example
tensor = [[1, 2], [3, 4], [5, 6]]
mask = np.array([True, False, True])
boolean_mask(tensor, mask) # [[1, 2], [5, 6]]
2.