Find positive values in a given dimension without using torch.where()

Hi Everyone,
I do not want to use torch.where() and still wants to find the positive values in a tensor in a given dimension,
example, x = torch.randn(3,288), then I want to find the sum of positive values along the dimension 1. Note than x[x>0] will not be helpful because it will create an 1-d tensor.

Thanks in advance

Hi Prakhar!

In this particular instance, max() suffices.

More generally, you can still use a condition such as x > 0, but just use
it as a numerical mask, rather than an index.

Consider:

>>> import torch
>>> torch.__version__
'1.12.0'
>>> _ = torch.manual_seed (2022)
>>>
>>> x = torch.randn (3, 288)
>>> torch.max (x, torch.tensor ([0.0])).sum (dim = 1)
tensor([118.9255, 116.4891, 128.0370])
>>>
>>> mask = x > 0.0   # boolean mask, but can be used numerically
>>> (mask * x).sum (dim = 1)
tensor([118.9255, 116.4891, 128.0370])
>>>
>>> (mask * x).sum (dim = 1) / mask.sum (dim = 1)   # mean of positive elements
tensor([0.8202, 0.8381, 0.8053])

Best.

K. Frank

Thank you so much, it will be of great help