I have a simple code that generates a random tensor (float32). Then I compare each of the values in the tensor equal to the first number in the tensor. I got weird result where all True values are returning.

import torch

torch.manual_seed(1)

a = torch.rand(2, 10)

tensor([[0.7576, 0.2793, 0.4031, 0.7347, 0.0293, 0.7999, 0.3971, 0.7544, 0.5695,

0.4388], [0.6387, 0.5247, 0.6826, 0.3051, 0.4635, 0.4550, 0.5725, 0.4980, 0.9371,

0.6556]])a != 0.7576

tensor([[True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True]])

Meanwhile If I changed to something like this, I got the right returning boolean values.

a != a[0][0]

tensor([[False, True, True, True, True, True, True, True, True, True],

[ True, True, True, True, True, True, True, True, True, True]])

I am curious why this happens? Thanks!