Función torch.tensor de PyTorch


Pytorch torch 参考手册Manual de referencia de PyTorch torch

torch.tensorEs la función central de PyTorch para crear tensores. Crea un nuevo tensor copiando los datos y no conserva el historial de gradiente automático de los datos originales.

Es una de las formas más comunes de crear tensores en PyTorch y es adecuada para la mayoría de los escenarios.

Definición de la función

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

Parámetros:

  • data(cualquier tipo): Los datos del tensor, que pueden ser una lista de Python, una tupla, un array de NumPy, etc.
  • dtype(torch.dtype, opcional): Especifica el tipo de datos del tensor, comotorch.float32、torch.int64etc.
  • device(torch.device, opcional): Especifica el dispositivo donde se almacena el tensor, comotorch.device('cpu')otorch.device('cuda')。
  • requires_grad(bool, opcional): Si se necesita calcular el gradiente, por defecto esFalse。
  • pin_memory(bool, opcional): Si se usa memoria de página bloqueada (pinned), por defecto esFalse。

Valor de retorno:

  • torch.Tensor: Devuelve un tensor de PyTorch.

Ejemplos de uso

A continuación se muestran algunostorch.tensorejemplos de uso de la función.

Ejemplo 1: Crear un tensor desde una lista

Ejemplo

import torch

# Crear un tensor unidimensional a partir de una lista de Python
data = [1, 2, 3, 4, 5]
x = torch.tensor(data)

print(x)
print(x.dtype)

La salida es:

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

En este ejemplo, creamos un tensor unidimensional a partir de una lista de Python. PyTorch infiere automáticamente el tipo de datos comoint64。

Ejemplo 2: Especificar el tipo de datos

Ejemplo

import torch

# Crear un tensor de tipo float32
x = torch.tensor([1.0, 2.0, 3.0], dtype=torch.float32)

print(x)
print(x.dtype)

La salida es:

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

En este ejemplo, especificamos explícitamente el tipo de datos del tensor comofloat32。

Ejemplo 3: Crear un tensor que requiere gradiente

Ejemplo

import torch

# Crear un tensor que necesita calcular el gradiente
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)

print(x.requires_grad)

La salida es:

True

En este ejemplo, creamos un tensor que necesita calcular el gradiente, lo cual es muy útil al entrenar redes neuronales.

Ejemplo 4: Crear un tensor desde una lista bidimensional

Ejemplo

import torch

# Crear un tensor bidimensional (matriz) a partir de una lista bidimensional
data = [[1, 2, 3], [4, 5, 6]]
x = torch.tensor(data)

print(x)
print(x.shape)

La salida es:

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

En este ejemplo, creamos un tensor bidimensional de tamaño 2x3 a partir de una lista bidimensional.

Ejemplo 5: Crear un tensor en un dispositivo CUDA

Ejemplo

import torch

# Comprobar si CUDA está disponible
if torch.cuda.is_available():
    # Crear un tensor en el dispositivo CUDA
    x = torch.tensor([1, 2, 3], device='cuda')
    print(x.device)
else:
    print("CUDA no disponible")

La salida es:

cuda:0

En este ejemplo, comprobamos si CUDA está disponible y luego creamos un tensor en la GPU.


Diferencia entre torch.tensor y torch.as_tensor

torch.tensorytorch.as_tensorAmbas se utilizan para crear tensores, pero tienen diferencias importantes:

  • torch.tensor: siempre copia los datos; el tensor creado no comparte memoria con los datos originales.
  • torch.as_tensor: comparte los datos siempre que sea posible; no copia memoria, solo copia cuando es necesario.

Si necesita conservar el historial de gradiente automático o evitar la copia innecesaria de datos, puede usartorch.as_tensor。


Notas

  • torch.tensorSe copian los datos, por lo que las modificaciones al tensor devuelto no afectan a los datos originales.
  • Si necesita crear un nuevo tensor con la misma forma y el mismo dispositivo que otro tensor, puede usartorch.zeros_like()otorch.ones_like()。
  • Al crear un tensor, si no se especificadtypePyTorch infiere automáticamente el tipo de datos.

Pytorch torch 参考手册Manual de referencia de PyTorch torch

Otras extensiones