在 Pytorch 中,(x<0) 和 x.lt(0) 之间有区别吗?

Lar*_*ial 5 python operator-overloading pytorch

假设x是 Pytorch 中的一个张量。一个人可以写:

x_lowerthanzero = x.lt(0)
Run Code Online (Sandbox Code Playgroud)

或者:

x_lowerthanzero = (x<0)
Run Code Online (Sandbox Code Playgroud)

看似完全相同的结果。许多其他的操作都Pytorch内置等效:x.gt(0)(x>0)x.neg()-xx.mul()等等。

是否有充分的理由使用一种形式而不是另一种形式?

fla*_*awr 1

通常没有理由使用其中一个,它们主要是为了方便:其中许多方法确实有一个out参数,它可以让您指定一个张量来保存结果,但您也可以这样做使用运算符而不是方法。

  • 不,我不:如果你查看[实现](https://github.com/pytorch/pytorch/blob/fa8044d92f8a77b8008ca5e295a341abb9d26f13/torch/tensor.py),你会发现运算符甚至是根据这些方法定义的。可能是因为这些方法是用C实现的,然后运算符是用python实现的,调用C-api。 (2认同)