比较与torch.cross的功能差异
torch.cross
class torch.cross(
input,
other,
dim=-1,
out=None
)
更多内容详见 torch.cross。
mindspore.numpy.cross
class mindspore.numpy.cross(
a,
b,
axisa=- 1,
axisb=- 1,
axisc=- 1,
axis=None
)
更多内容详见 mindspore.numpy.cross。
使用方式
PyTorch: 返回input和other维度dim中向量的叉积。输入必须具有相同的大小,并且它们的dim维度的大小应为3。如果未给出dim,则默认为找到的第一个大小为3的维度。
MindSpore: 如果a和b是向量数组,则默认情况下,向量由a和b的最后一个轴定义,这些轴的维度可以是2或3。当a或b的维数为2时,假设输入向量的第三个分量为零,并相应地计算叉积。如果两个输入向量的维度均为2,则返回叉积的z分量。
代码示例
import mindspore.numpy as np
import torch
# MindSpore
x = np.array([[1,2,3], [4,5,6]])
y = np.array([[4,5,6], [1,2,3]])
output = np.cross(x, y)
print(output)
# [[-3 6 -3]
# [ 3 -6 3]]
output = np.cross(x, y, axisc=0)
print(output)
# [[-3 3]
# [ 6 -6]
# [-3 3]]
x = np.array([[1,2], [4,5]])
y = np.array([[4,5], [1,2]])
print(np.cross(x, y))
# Tensor(shape=[2], dtype=Int32, value= [-3, 3])
# PyTorch
a = torch.tensor([[1,2,3], [4,5,6]], dtype=torch.int8)
b = torch.tensor([[4,5,6], [1,2,3]], dtype=torch.int8)
print(torch.cross(a, b, dim=1))
# tensor([[-3, 6, -3],
# [ 3, -6, 3]], dtype=torch.int8)
print(torch.cross(a, b))
# tensor([[-3, 6, -3],
# [ 3, -6, 3]], dtype=torch.int8)
a = torch.tensor([[1,2], [4,5]], dtype=torch.int8)
b = torch.tensor([[4,5], [1,2]], dtype=torch.int8)
print(torch.cross(a, b))
# RuntimeError: no dimension of size 3 in input