def loop_body(b, ignore_mask):
true_box = tf.boolean_mask(y_true[l][b,...,0:4], object_mask_bool[b,...,0])
iou = box_iou(pred_box[b], true_box)
best_iou = K.max(iou, axis=-1)
ignore_mask = ignore_mask.write(b, K.cast(best_iou<ignore_thresh, K.dtype(true_box)))
return b+1, ignore_mask
_, ignore_mask = K.control_flow_ops.while_loop(lambda b,*args: b<m, loop_body, [0, ignore_mask])
作用是循环处理某个变量,中间处理的结果用来进行下一次处理,最后输出经过数次加工的变量。
lambda b,*args: b<m:是条件函数。lambda 是匿名函数关键字。b,*args是形参,b<m是返回的结果
loop_body:是循环目标函数。
[0, ignore_mask]:是函数的起始实参。
条件函数和循环函数的参数相同。