# Crate caffe2op_percentile

## Structs

• | Operator to calculate percentile values | for an input tensor of data, given samples | of data from the same distribution, | labeled with their percentile values. | | This operator is used to find percentile | representations for raw values, given | a sample set of raw values, labeled with | their corresponding percentiles from | the same distribution. | | In particular, this operator takes | as input a tensor of floats to find the | percentile values for, a 2D tensor of | floats, where the first column of the | tensor represents sampled values, | and the second column represents the | percentile labels, and a tensor of integers | lengths. | | This lengths tensor is used because | the operator works on multiple sets | of raw values at the same time. For example, | for an input: | | original_values=[[3, 5, 3],[5, 1, 6]], | | lengths = [2, 1, 1], | | value_to_pct = [[3, 0.2], [5, 0.5], [1, 0.3], [3. 0.6]] | | Our operator expects that each column | i of the input tensor is sampled from | distribution i. Lengths tells us that | the first two elements in value_to_pct | are sampled from distribution 1, the | next is from distribution two, and the | last is from distribution 3. We expect | the output of our operator to give us | [[0.2, 1.0, 0.6], [0.5, 0.3, 1.0]]. | | To calculate the percentile of an element, | we check to see if its value is already | mapped to a percentile in value_to_pct. | If so, we return that value. If not, we | linearly interpolate between the two | closest values in value_to_pct. If | the value is larger than all values in | value_to_pct, we return 1. If it’s smaller | than all the values, we return 0. |