比较与torch.atan2的功能差异

torch.atan2

torch.atan2(input, other, *, out=None) -> Tensor

更多内容详见torch.atan2

mindspore.ops.atan2

mindspore.ops.atan2(x, y) -> Tensor

更多内容详见mindspore.ops.atan2

差异对比

PyTorch:逐元素计算考虑象限的input/other的反正切值,其中第二个参数other是x坐标,第一个参数input是y坐标。

MindSpore:MindSpore此API实现功能与PyTorch基本一致,不过也支持x或者y为Scalar的输入。

分类

子类

PyTorch

MindSpore

差异

参数

参数1

input

x

功能一致,参数名不同

参数2

other

y

功能一致,参数名不同

参数3

out

-

不涉及

代码示例1

当输入的x和y均为Tensor的时候,两API实现相同的功能。

# PyTorch
import numpy as np
import torch
from torch import tensor

input = torch.tensor(np.array([0, 1]), dtype=torch.float32)
other = torch.tensor(np.array([1, 1]), dtype=torch.int)
output = torch.atan2(input, other).numpy()
print(output)
# [0.        0.7853982]

# MindSpore
import numpy as np
import mindspore
import mindspore.ops as ops
from mindspore import Tensor

x = Tensor(np.array([0, 1]), mindspore.float32)
y = Tensor(np.array([1, 1]), mindspore.float32)

output = ops.atan2(x, y)
print(output)
# [0.        0.7853982]

代码示例2

说明:当输入的x或y是Scalar的时候,MindSpore能实现对应功能,pytorch不支持。

# MindSpore
import numpy as np
import mindspore
import mindspore.ops as ops
from mindspore import Tensor

x = 1
y = Tensor(np.array([1, 1]), mindspore.float32)

output = ops.atan2(x, y)
print(output)
# [0.7853982 0.7853982]