Функция PyTorch torch.tensor


Pytorch torch 参考手册Справочное руководство PyTorch torch

torch.tensorЭто основная функция в PyTorch для создания тензоров. Она создаёт новый тензор путём копирования данных и не сохраняет историю автоматического градиента исходных данных.

Это один из наиболее часто используемых способов создания тензоров PyTorch, подходящий для большинства сценариев.

Определение функции

torch.tensor(data, dtype=None, device=None, requires_grad=False, pin_memory=False)

Parameters:

  • data(любой тип): данные тензора, которые могут быть списком Python, кортежем, массивом NumPy и т. д.
  • dtype(torch.dtype, необязательно): задаёт тип данных тензора, напримерtorch.float32、torch.int64и т. д.
  • device(torch.device, необязательно): задаёт устройство, на котором хранится тензор, напримерtorch.device('cpu')илиtorch.device('cuda')。
  • requires_grad(bool, необязательно): нужно ли вычислять градиент; по умолчаниюFalse。
  • pin_memory(bool, необязательно): использовать ли закреплённую память; по умолчаниюFalse。

Возвращаемое значение:

  • torch.TensorВозвращает тензор PyTorch.

Примеры использования

Ниже приведены несколько примеров использованияtorch.tensorфункцию.

Пример 1: Создание тензора из списка

Пример

import torch

# Создать одномерный тензор из списка Python
data = [1, 2, 3, 4, 5]
x = torch.tensor(data)

print(x)
print(x.dtype)

Вывод:

tensor([1, 2, 3, 4, 5])
torch.int64

В этом примере мы создали одномерный тензор из списка Python. PyTorch автоматически выводит тип данных какint64。

Пример 2: Указание типа данных

Пример

import torch

# Создать тензор типа float32
x = torch.tensor([1.0, 2.0, 3.0], dtype=torch.float32)

print(x)
print(x.dtype)

Вывод:

tensor([1., 2., 3.])
torch.float32

В этом примере мы явно указали тип данных тензора какfloat32。

Пример 3: Создание тензора, требующего градиентов

Пример

import torch

# Создать тензор, требующий вычисления градиента
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)

print(x.requires_grad)

Вывод:

True

В этом примере мы создали тензор, требующий вычисления градиентов, что очень полезно при обучении нейронных сетей.

Пример 4: Создание тензора из двумерного списка

Пример

import torch

# Создание двумерного тензора (матрицы) из двумерного списка
data = [[1, 2, 3], [4, 5, 6]]
x = torch.tensor(data)

print(x)
print(x.shape)

Вывод:

tensor([[1, 2, 3],
        [4, 5, 6]])
torch.Size([2, 3])

В этом примере мы создали двумерный тензор размером 2x3 из двумерного списка.

Пример 5: Создание тензора на устройстве CUDA

Пример

import torch

# Проверить, доступна ли CUDA
if torch.cuda.is_available():
    # Создание тензора на устройстве CUDA
    x = torch.tensor([1, 2, 3], device='cuda')
    print(x.device)
else:
    print("CUDA is not available")

Вывод:

cuda:0

В этом примере мы проверяем, доступна ли CUDA, а затем создаём тензор на GPU.


Разница между torch.tensor и torch.as_tensor

torch.tensorиtorch.as_tensorОба используются для создания тензоров, но у них есть важные различия:

  • torch.tensorВсегда копирует данные; созданный тензор не разделяет память с исходными данными.
  • torch.as_tensorПо возможности разделяет данные, не копирует память и копирует только при необходимости.

Если вам нужно сохранить историю autograd или избежать ненужного копирования данных, вы можете использоватьtorch.as_tensor。


Примечания

  • torch.tensorОн копирует данные, поэтому изменения в возвращённом тензоре не повлияют на исходные данные.
  • Если вам нужно создать новый тензор с той же формой и устройством, как у другого тензора, вы можете использоватьtorch.zeros_like()илиtorch.ones_like()。
  • При создании тензора, если вы не указываетеdtype, PyTorch автоматически определит тип данных.

Pytorch torch 参考手册Справочное руководство PyTorch torch

Другие расширения