Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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<0)

with seemingly the exact same results. Many other operations have Pytorch built-in equivalents: x.gt(0) for (x>0), x.neg() for -x, x.mul() etc.

Is there a good reason to use one form over the other?

like image 604
Larsupial Avatar asked Apr 06 '21 08:04

Larsupial


1 Answers

They are equivalent. < 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 < b lt(a, b)
Ordering a <= b le(a, b)
Equality a == b eq(a, b)
Difference a != b ne(a, b)
Ordering a >= b ge(a, b)
Ordering a > 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)
like image 58
iacob Avatar answered Sep 25 '22 02:09

iacob