Hi,
I am very confused on how to perform multiple boolean comparisons, I normally use this in numpy to create a mask to select indices. These indices are then used to replace slices of a multidimensional array. So the numpy equivalent is:
a[ ( b > 5) | ( b < 20),: ] = 1 # where a and b are numpy arrays, respectively
Now in pytorch, indices must be LongTensor. So that type of comparison does not really work:
mask = ( b > 5 ).__or__.(b < 20) #this results in a ByteTensor
I can use this to select from the tensor but not assign. A long winded way of doing it:
mask = torch.LongTensor(np.argwhere((b > 5).numpy().astype(bool) | (b < 20).numpy().astype(bool)))
a[mask,:] =1
Is there an elegant way to do this?