比较与torch.erfc的功能差异
torch.erfc
torch.erfc(input, * , out=None) -> Tensor
更多内容详见torch.erfc。
mindspore.ops.erfc
mindspore.ops.erfc(x) -> Tensor
更多内容详见mindspore.ops.erfc。
差异对比
PyTorch:逐元素计算 x 的互补误差函数,即 \( \operatorname{erfc}(x)=1-\frac{2}{\sqrt{\pi}} \int_{0}^{x} e^{-t^{2}} d t \) 。
MindSpore:与PyTorch实现的功能基本一致,但支持的维度大小有差异。
分类 |
子类 |
PyTorch |
MindSpore |
差异 |
---|---|---|---|---|
参数 |
参数1 |
input |
x |
功能一致,参数名不同,支持的维度大小有差异 |
参数2 |
out |
- |
不涉及 |
代码示例1
PyTorch没有限制x的维度,而MindSpore中x支持的维度必须小于8。当x的维度小于8时,两API功能一致,用法相同。
import torch
from torch import tensor
import numpy as np
x_ = np.ones((1, 1, 1, 1, 1, 1, 1))
x = tensor(x_, dtype=torch.float32)
out = torch.erfc(x).numpy()
print(out)
# [[[[[[[0.1572992]]]]]]]
# MindSpore
import mindspore
from mindspore import Tensor
import mindspore.ops as ops
import numpy as np
x_ = np.ones((1, 1, 1, 1, 1, 1, 1))
x = Tensor(x_, mindspore.float32)
out = ops.erfc(x)
print(out)
# [[[[[[[0.1572992]]]]]]]
代码示例2
当x的维度超过或等于8时,可以通过API组和实现同样的功能。使用ops.reshape将x的维度降为1,然后调用ops.erfc进行计算,最后再次使用ops.reshape对得到的结果按照x的原始维度进行升维操作。
import torch
from torch import tensor
import numpy as np
x_ = np.ones((1, 1, 1, 1, 1, 1, 1, 1))
x = tensor(x_, dtype=torch.float32)
out = torch.erfc(x).numpy()
print(out)
# [[[[[[[[0.1572992]]]]]]]]
# MindSpore
import mindspore
from mindspore import Tensor
import mindspore.ops as ops
import numpy as np
x_ = np.ones((1, 1, 1, 1, 1, 1, 1, 1))
x = Tensor(x_, mindspore.float32)
x_reshaped = ops.reshape(x, (-1,))
out_temp = ops.erfc(x_reshaped)
out = ops.reshape(out_temp, x.shape)
print(out)
# [[[[[[[[0.1572992]]]]]]]]