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