比较与torch.add的功能差异

torch.add

torch.add(input, other, alpha=1) -> Tensor

更多内容详见torch.add

mindspore.ops.add

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

更多内容详见mindspore.ops.add

差异对比

PyTorch:不设置参数alpha时,输入input和输入other逐元素相加,设置参数alpha时,张量other的每个元素乘以标量alpha与张量input的每个逐元素相加,返回结果张量。

MindSpore:MindSpore此API实现功能与PyTorch不设置alpha参数时一致,仅参数名不同,MindSpore无此参数。

分类

子类

PyTorch

MindSpore

差异

参数

参数1

input

x

功能一致,参数名不同

参数2

other

y

功能一致,参数名不同

参数3

alpha

-

输入other的标量乘数,MindSpore无此参数

代码示例1

torch.add不设置alpha参数时,两API实现功能一致,用法相同。

# PyTorch
import torch
from torch import tensor

input = torch.tensor([1, 2, 3], dtype=torch.float32)
other = torch.tensor([4, 5, 6], dtype=torch.float32)
out = torch.add(input, other).numpy()
print(out)
# [5. 7. 9.]

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

x = Tensor(np.array([1, 2, 3]).astype(np.float32))
y = Tensor(np.array([4, 5, 6]).astype(np.float32))
output = ops.add(x, y).asnumpy()
print(output)
# [5. 7. 9.]

代码示例2

torch.add设置alpha参数时,MindSpore在调用add接口前,使用相同alpha值与y相乘,可以实现与PyTorch同样的效果。

# PyTorch
import torch
from torch import tensor

input = torch.tensor([1, 2, 3], dtype=torch.float32)
other = torch.tensor([[1],[2],[3]], dtype=torch.float32)
out = torch.add(input, other, alpha=10).numpy()
print(out)
# [[11. 12. 13.]
#  [21. 22. 23.]
#  [31. 32. 33.]]

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

x = Tensor(np.array([1, 2, 3]).astype(np.float32))
y = Tensor(np.array([[1],[2],[3]]).astype(np.float32))
alpha = 10
output = ops.add(x, y * alpha).asnumpy()
print(output)
# [[11. 12. 13.]
#  [21. 22. 23.]
#  [31. 32. 33.]]