Функция asarray
Функция asarray преобразует входные данные в тензор PyTorch.
В отличие от tensor, эта функция старается избегать копирования
данных, если это возможно. Первым параметром она принимает данные
для преобразования: список, кортеж, массив NumPy или другой тензор.
Вторым параметром можно указать требуемый тип данных элементов.
Третьим параметром можно передать устройство, на котором
должен располагаться тензор.
Синтаксис
torch.asarray(data, [dtype], [device])
Пример
Давайте преобразуем список чисел в тензор с помощью функции asarray:
import torch
t = torch.asarray([1, 2, 3, 4, 5])
print(t)
Результат выполнения кода:
tensor([1, 2, 3, 4, 5])
Пример
Теперь создадим тензор с указанием типа данных float и
устройства cuda (если доступно):
import torch
t = torch.asarray([1, 2, 3, 4, 5], dtype=torch.float, device='cuda')
print(t)
Результат выполнения кода:
tensor([1., 2., 3., 4., 5.], device='cuda:0')
Пример
Функция asarray может принимать массив NumPy.
В этом случае данные не копируются, если тип данных и
расположение в памяти совпадают:
import torch
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
t = torch.asarray(arr)
print(t)
Результат выполнения кода:
tensor([1, 2, 3, 4, 5])
Пример
Если передать существующий тензор, функция asarray
вернёт его же без копирования:
import torch
orig = torch.tensor([1, 2, 3, 4, 5])
t = torch.asarray(orig)
print(t)
print(t is orig)
Результат выполнения кода:
tensor([1, 2, 3, 4, 5])
True
Пример
Создадим двумерный тензор из списка списков:
import torch
t = torch.asarray([[1, 2, 3], [4, 5, 6]])
print(t)
Результат выполнения кода:
tensor([
[1, 2, 3],
[4, 5, 6],
])
Пример
Изменим тип данных на float без копирования
(если это возможно):
import torch
t = torch.asarray([1, 2, 3, 4, 5], dtype=torch.float32)
print(t)
Результат выполнения кода:
tensor([1., 2., 3., 4., 5.])
Смотрите также
-
функцию
tensor,
которая создаёт тензор с обязательным копированием данных -
функцию
as_tensor,
которая преобразует данные в тензор без копирования (устаревшая) -
функцию
from_numpy,
которая создаёт тензор из массива NumPy без копирования -
функцию
zeros,
которая создаёт тензор, заполненный нулями