(precision, recall, name=None)
Compute (interpolated) average precision from precision and recall Tensors.

    The implementation follows Pascal 2012 and ILSVRC guidelines.
    See also: https://sanchom.wordpress.com/tag/average-precision/
Compute (interpolated) average precision from precision and recall Tensors.
Compute ( interpolated ) average precision from precision and recall Tensors .
def average_precision_voc12(precision, recall, name=None):
    """Compute (interpolated) average precision from precision and recall Tensors.

    The implementation follows Pascal 2012 and ILSVRC guidelines.
    See also: https://sanchom.wordpress.com/tag/average-precision/
    """
    with tf.name_scope(name, 'average_precision_voc12', [precision, recall]):
        # Convert to float64 to decrease error on Riemann sums.
        precision = tf.cast(precision, dtype=tf.float64)
        recall = tf.cast(recall, dtype=tf.float64)

        # Add bounds values to precision and recall.
        precision = tf.concat([[0.], precision, [0.]], axis=0)
        recall = tf.concat([[0.], recall, [1.]], axis=0)
        # Ensures precision is increasing in reverse order.
        precision = cummax(precision, reverse=True)

        # Riemann sums for estimating the integral.
        # mean_pre = (precision[1:] + precision[:-1]) / 2.
        mean_pre = precision[1:]
        diff_rec = recall[1:] - recall[:-1]
        ap = tf.reduce_sum(mean_pre * diff_rec)
        return ap
def average_precision_voc12 ( precision , recall , name = None ) : with tf . name_scope ( name , 'average_precision_voc12' , [ precision , recall ] ) : # Convert to float64 to decrease error on Riemann sums. precision = tf . cast ( precision , dtype = tf . float64 ) recall = tf . cast ( recall , dtype = tf . float64 ) # Add bounds values to precision and recall. precision = tf . concat ( [ [ 0. ] , precision , [ 0. ] ] , axis = 0 ) recall = tf . concat ( [ [ 0. ] , recall , [ 1. ] ] , axis = 0 ) # Ensures precision is increasing in reverse order. precision = cummax ( precision , reverse = True ) # Riemann sums for estimating the integral. # mean_pre = (precision[1:] + precision[:-1]) / 2. mean_pre = precision [ 1 : ] diff_rec = recall [ 1 : ] - recall [ : - 1 ] ap = tf . reduce_sum ( mean_pre * diff_rec ) return ap