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

    The implementation follows Pascal 2007 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_voc07(precision, recall, name=None):
    """Compute (interpolated) average precision from precision and recall Tensors.

    The implementation follows Pascal 2007 guidelines.
    See also: https://sanchom.wordpress.com/tag/average-precision/
    """
    with tf.name_scope(name, 'average_precision_voc07', [precision, recall]):
        # Convert to float64 to decrease error on cumulated sums.
        precision = tf.cast(precision, dtype=tf.float64)
        recall = tf.cast(recall, dtype=tf.float64)
        # Add zero-limit value to avoid any boundary problem...
        precision = tf.concat([precision, [0.]], axis=0)
        recall = tf.concat([recall, [np.inf]], axis=0)

        # Split the integral into 10 bins.
        l_aps = []
        for t in np.arange(0., 1.1, 0.1):
            mask = tf.greater_equal(recall, t)
            v = tf.reduce_max(tf.boolean_mask(precision, mask))
            l_aps.append(v / 11.)
        ap = tf.add_n(l_aps)
        return ap
def average_precision_voc07 ( precision , recall , name = None ) : with tf . name_scope ( name , 'average_precision_voc07' , [ precision , recall ] ) : # Convert to float64 to decrease error on cumulated sums. precision = tf . cast ( precision , dtype = tf . float64 ) recall = tf . cast ( recall , dtype = tf . float64 ) # Add zero-limit value to avoid any boundary problem... precision = tf . concat ( [ precision , [ 0. ] ] , axis = 0 ) recall = tf . concat ( [ recall , [ np . inf ] ] , axis = 0 ) # Split the integral into 10 bins. l_aps = [ ] for t in np . arange ( 0. , 1.1 , 0.1 ) : mask = tf . greater_equal ( recall , t ) v = tf . reduce_max ( tf . boolean_mask ( precision , mask ) ) l_aps . append ( v / 11. ) ap = tf . add_n ( l_aps ) return ap