Efficient quantile/k-largest value

I saw that there is a median function supported. I am wondering whether there is any operation that can compute the k-largest values without using sorting? (I can implement it with topk() but I assume when k is large, the function is not very efficient?)

I am not sure to understand what you’re looking for? If you’re looking for the k-largest values, then topk() is the function you should use, this is exactly what this function is doing.

1 Like

I think it’d be neat to get just the kth largest value efficiently, eg the 0.25 and 0.75 quartile values, similar to np.percentile.

Best regards

Thomas

1 Like

So you’re looking for the kth largest value? not all the top k largest values?

1 Like

I’ve been looking for exactly that a few times. (And that is the similarity with median as far as I understand.)

1 Like

No that does not exist as far as I know.

I know it’s not as efficient as it could be, but I implemented a pytorch version for percentile:

There now is a kthvalue function for CPU and CUDA in torch 1.1 (or the nightlies).

Best regards

Thomas

2 Likes

For those who later read this thread and want to jump to the docs, there are both a torch kthvalue method and a similar Tensor kthvalue method as well.

7 Likes

is there a simple way to have k be a vector rather than an int so that its a different k for each sample in a batch?

1 Like