Función torch.tensor de PyTorch
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
# 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
# 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
# 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
# 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
# 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 usar
torch.zeros_like()otorch.ones_like()。 - Al crear un tensor, si no se especifica
dtypePyTorch infiere automáticamente el tipo de datos.
Otras extensiones