In Pytorch, is there a difference between (x<0) and x.lt(0)?
Suppose x is a tensor in Pytorch. One can either write:
x_lowerthanzero = x.lt(0)

or:
x_lowerthanzero = (x&lt;0)

with seemingly the exact same results. Many other operations have Pytorch built-in equivalents: x.gt(0) for (x&gt;0), x.neg() for -x, x.mul() etc.
Is there a good reason to use one form over the other?

They are equivalent. &lt; is simply a more readable alias.
Python operators have canonical function mappings e.g:
Algebraic operations




Operation
Syntax
Function




Addition
a + b
add(a, b)


Subtraction
a - b
sub(a, b)


Multiplication
a * b
mul(a, b)


Division
a / b
truediv(a, b)


Exponentiation
a ** b
pow(a, b)


Matrix Multiplication
a @ b
matmul(a, b)




Comparisons




Operation
Syntax
Function




Ordering
a &lt; b
lt(a, b)


Ordering
a &lt;= b
le(a, b)


Equality
a == b
eq(a, b)


Difference
a != b
ne(a, b)


Ordering
a &gt;= b
ge(a, b)


Ordering
a &gt; b
gt(a, b)




You can check that these are indeed mapped to the respectively named torch functions here e.g:
def __lt__(self, other):
    return self.lt(other)

