Indexing tensors - the correct method?

Hi, given 2 tensors, I wanna keep only those elements in tensor1 that are in tensor 2. I am using the below snippet (output from debugger in italics)

    def in1d(ar1, ar2):
        mask = ar2.new_zeros((max(len(ar1), len(ar2))), dtype=torch.bool)

*tensor([False, False, False, False, False, False, False, False, False, False,*
*        False, False, False, False, False, False, False, False, False, False,*
*        False, False, False, False, False, False, False, False, False, False,*
*        False, False, False, False, False, False, False, False, False, False,*
*        False, False, False, False, False, False, False, False, False, False,*
*        False, False, False, False, False, False, False, False, False, False,*
*        False, False, False, False, False, False, False, False, False, False,*
*        False, False, False, False, False, False, False, False, False, False,*
*        False, False, False, False, False, False, False, False, False, False,*
*        False, False, False, False, False, False, False, False, False],*
*       device='cuda:0')*

        mask[ar2.unique()] = True
mask
**<torch.Tensor object at 0x7fc12d7d1c20>*

        return mask[ar1]
*CUDA Device side assert trigerred*

I noticed that as soon as I try assigning values as so - mask[ar2.unique()] = True, the mask tensor doesn’t get printed and instead only shows up as an object. Why?

How should tensors be indexed and masked? Is there a torch-ic way for this?

Aha, my bad, turns out I was indexing out of bounds. Out of bounds indexing of a cuDA tensor gives cUDA assert error