Torch.where too weird

Is this predicted?
It’s not intuitive, at least for me.

x = torch.normal(0.0, 5, size=(4, 16, 32, 32))

try:
    # trial 1
    y = torch.where(x > 0, x, 0)
except:
    print('trial 1 failed')
else:
    print('trial 1 succeed, the size of y: ', y.size())
    
try:
    # trial 2
    y = torch.where(x > 0, x, 0.0)
except:
    print('trial 2 failed')
else:
    print('trial 2 succeed, the size of y: ', y.size())
    
    
try:
    # trial 3
    y = torch.where(x > 0, x, torch.tensor(0.0))
except:
    print('trial 3 failed')
else:
    print('trial 3 succeed, the size of y: ', y.size())

trial 1 failed
trial 2 failed
trial 3 succeed, the size of y: torch.Size([4, 16, 32, 32])

Yeah agree. Absolutely not intuitive. But to be fair, its actually documented torch.where — PyTorch 1.7.1 documentation.