Функция vdot
Функция vdot вычисляет скалярное произведение двух тензоров.
В отличие от dot, эта функция правильно обрабатывает комплексные числа:
первый аргумент подвергается комплексному сопряжению.
Функция принимает два тензора и возвращает скалярное значение.
Синтаксис
torch.vdot(tensor1, tensor2)
Пример
Вычислим скалярное произведение двух векторов из вещественных чисел:
import torch
t1 = torch.tensor([1, 2, 3])
t2 = torch.tensor([4, 5, 6])
res = torch.vdot(t1, t2)
print(res)
Результат выполнения кода:
tensor(32)
Пример
Вычислим скалярное произведение двух комплексных векторов:
import torch
t1 = torch.tensor([1 + 2j, 3 + 4j])
t2 = torch.tensor([5 + 6j, 7 + 8j])
res = torch.vdot(t1, t2)
print(res)
Результат выполнения кода:
tensor(70 - 8j)
Обратите внимание, что первый вектор был комплексно сопряжен перед умножением.
Пример
Сравним работу функций vdot и dot для комплексных чисел:
import torch
t1 = torch.tensor([1 + 1j, 2 + 2j])
t2 = torch.tensor([3 + 3j, 4 + 4j])
res_vdot = torch.vdot(t1, t2)
res_dot = torch.dot(t1, t2)
print("vdot:", res_vdot)
print("dot :", res_dot)
Результат выполнения кода:
vdot: tensor(10 - 10j)
dot : tensor(10 + 10j)