import tensorflow as tf

        probability of each label learned by the loss, if not provided.
      true_positives_lower_bound: Lower bound on the number of true positives
        given `labels` and `logits`. This is the same lower bound which is used
        in the loss expression to be optimized.
      false_positives_upper_bound: Upper bound on the number of false positives
        given `labels` and `logits`. This is the same upper bound which is used
        in the loss expression to be optimized.
  Raises:
    ValueError: If `logits` and `labels` do not have the same shape.
  """
  with tf.variable_scope(scope, 'recall_at_precision', [logits, labels, label_priors], reuse=reuse):
    labels, logits, weights, original_shape = _prepare_labels_logits_weights(labels, logits, weights)
    num_labels = losses_utils.get_num_labels(logits)

    # Convert other inputs to tensors and standardize dtypes.
    target_precision = losses_utils.convert_and_cast(target_precision, 'target_precision',
                                                     logits.dtype)
    dual_rate_factor = losses_utils.convert_and_cast(dual_rate_factor, 'dual_rate_factor',
                                                     logits.dtype)

