Функция cross
Функция cross вычисляет векторное произведение двух трехмерных векторов.
Первым параметром функция принимает тензор с координатами первого вектора,
вторым параметром - тензор с координатами второго вектора.
Третий параметр dim определяет ось, вдоль которой находятся координаты вектора (по умолчанию dim=-1).
Векторное произведение определено только для трехмерных векторов, поэтому размерность по указанной оси должна быть равна 3.
Синтаксис
torch.cross(a, b, dim=-1)
Пример
Давайте вычислим векторное произведение двух векторов [1, 2, 3] и [4, 5, 6]:
import torch
a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])
res = torch.cross(a, b)
print(res)
Результат выполнения кода:
tensor([-3, 6, -3])
Пример
Давайте вычислим векторное произведение для пакета векторов, где каждый вектор задан вдоль первой оси:
import torch
a = torch.tensor([
[1, 2, 3],
[4, 5, 6],
])
b = torch.tensor([
[7, 8, 9],
[10, 11, 12],
])
res = torch.cross(a, b, dim=1)
print(res)
Результат выполнения кода:
tensor([
[-6, 12, -6],
[-6, 12, -6],
])
Пример
Векторное произведение антикоммутативно: cross(a, b) = -cross(b, a).
Проверим это свойство:
import torch
a = torch.tensor([1, 0, 0])
b = torch.tensor([0, 1, 0])
res1 = torch.cross(a, b)
res2 = torch.cross(b, a)
print(res1)
print(res2)
Результат выполнения кода:
tensor([0, 0, 1])
tensor([0, 0, -1])
Смотрите также
-
функцию
dot,
которая вычисляет скалярное произведение двух тензоров -
функцию
matmul,
которая выполняет матричное умножение тензоров -
функцию
outer,
которая вычисляет внешнее произведение двух векторов -
функцию
einsum,
которая позволяет выполнять различные тензорные операции с использованием нотации Эйнштейна