Тип complex128
Тип complex128 в PyTorch представляет комплексные числа с плавающей запятой двойной точности (64 бита для действительной и 64 бита для мнимой части). Этот тип данных соответствует NumPy-типу complex128 и обеспечивает высокую точность при выполнении вычислений с комплексными числами. Комплексные числа удобно использовать в задачах цифровой обработки сигналов, квантовых вычислениях и при работе с преобразованиями Фурье.
Для создания тензора с типом complex128 необходимо передать параметр dtype=torch.complex128 в функцию создания тензора. Также можно использовать краткую запись torch.cdouble, которая является псевдонимом для torch.complex128.
Синтаксис
torch.tensor(data, dtype=torch.complex128)
torch.complex(real, imag, dtype=torch.complex128)
tensor.to(dtype=torch.complex128)
Пример
Создадим тензор комплексных чисел из списка и укажем тип complex128:
import torch
t = torch.tensor([1+2j, 3+4j, 5+6j], dtype=torch.complex128)
print(t)
print(t.dtype)
Результат выполнения кода:
tensor([1.+2.j, 3.+4.j, 5.+6.j], dtype=torch.complex128)
torch.complex128
Пример
Создадим комплексный тензор с помощью функции complex, передав отдельно действительную и мнимую части:
import torch
real = torch.tensor([1.0, 2.0, 3.0])
imag = torch.tensor([4.0, 5.0, 6.0])
t = torch.complex(real, imag)
print(t)
Результат выполнения кода:
tensor([1.+4.j, 2.+5.j, 3.+6.j])
Пример
Преобразуем существующий тензор в тип complex128 с помощью метода to:
import torch
t = torch.tensor([1, 2, 3, 4, 5], dtype=torch.float32)
print("Исходный тип:", t.dtype)
t = t.to(dtype=torch.complex128)
print("Новый тип:", t.dtype)
print(t)
Результат выполнения кода:
Исходный тип: torch.float32
Новый тип: torch.complex128
tensor([1.+0.j, 2.+0.j, 3.+0.j, 4.+0.j, 5.+0.j], dtype=torch.complex128)
Пример
Выполним арифметические операции с комплексными числами в формате complex128:
import torch
t1 = torch.tensor([1+2j, 3+4j], dtype=torch.complex128)
t2 = torch.tensor([5+6j, 7+8j], dtype=torch.complex128)
res_sum = t1 + t2
res_mul = t1 * t2
res_conj = torch.conj(t1)
print("Сумма:", res_sum)
print("Произведение:", res_mul)
print("Сопряжённое:", res_conj)
Результат выполнения кода:
Сумма: tensor([ 6.+8.j, 10.+12.j], dtype=torch.complex128)
Произведение: tensor([ -7.+16.j, -11.+52.j], dtype=torch.complex128)
Сопряжённое: tensor([1.-2.j, 3.-4.j], dtype=torch.complex128)
Пример
Получим доступ к действительной и мнимой частям комплексного тензора:
import torch
t = torch.tensor([1+2j, 3+4j, 5+6j], dtype=torch.complex128)
real_part = t.real
imag_part = t.imag
print("Действительная часть:", real_part)
print("Мнимая часть:", imag_part)
print("Тип действительной части:", real_part.dtype)
Результат выполнения кода:
Действительная часть: tensor([1., 3., 5.], dtype=torch.float64)
Мнимая часть: tensor([2., 4., 6.], dtype=torch.float64)
Тип действительной части: torch.float64
Смотрите также
-
тип
complex64,
который представляет комплексные числа одинарной точности -
тип
float64,
который представляет вещественные числа двойной точности -
функцию
promote_types,
которая определяет результирующий тип при операции с двумя типами -
функцию
can_cast,
которая проверяет возможность безопасного приведения типов