Formas y Dimensiones en PyTorch
De manera similar a los arreglos de NumPy, la forma de un tensor determina sus dimensiones. Puede inspeccionar la forma de un tensor utilizando el atributo .shape
:
123import torch tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(f"Tensor shape: {tensor.shape}")
Cambio de forma de tensores con view
El método .view()
crea una nueva vista del tensor con la forma especificada sin modificar el tensor original. El número total de elementos debe permanecer igual.
1234567import torch tensor = torch.arange(12) # Reshape a tensor to 4x3 reshaped_tensor = tensor.view(4, 3) print(f"Reshaped tensor: {reshaped_tensor}") # Original tensor remains unchanged print(f"Original tensor: {tensor}")
Redimensionamiento de tensores con reshape
El método .reshape()
es similar a .view()
, pero puede manejar casos en los que el tensor no está almacenado de forma contigua en la memoria. Además, no modifica el tensor original.
12345import torch tensor = torch.arange(12) # Reshape a tensor to 6x2 reshaped_tensor = tensor.reshape(6, 2) print(f"Reshaped tensor: {reshaped_tensor}")
Uso de Dimensiones Negativas
Se puede utilizar -1
en la forma para que PyTorch infiere el tamaño de una dimensión según el número total de elementos.
12345import torch tensor = torch.arange(12) # Automatically infer the second dimension inferred_tensor = tensor.view(2, -1) print("Inferred Tensor:", inferred_tensor)
Comprensión de las Vistas de Tensores
Una vista de un tensor comparte los mismos datos con el tensor original. Los cambios en la vista afectan al tensor original y viceversa.
1234567import torch tensor = torch.arange(12) view_tensor = tensor.view(2, 6) view_tensor[0, 0] = 999 # Changes in the view are reflected in the original tensor print("View Tensor:", view_tensor) print("Original Tensor:", tensor)
Cambio de dimensiones
Los siguientes dos métodos permiten agregar o eliminar dimensiones:
unsqueeze(dim)
agrega una nueva dimensión en la posición especificada;squeeze(dim)
elimina dimensiones de tamaño 1.
12345678import torch tensor = torch.arange(12) # Add a new dimension unsqueezed_tensor = tensor.unsqueeze(0) # Add a batch dimension print(f"Unsqueezed tensor: {unsqueezed_tensor.shape}") # Remove a dimension of size 1 squeezed_tensor = unsqueezed_tensor.squeeze(0) print(f"Squeezed Tensor: {squeezed_tensor.shape}")
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 5
Formas y Dimensiones en PyTorch
Desliza para mostrar el menú
De manera similar a los arreglos de NumPy, la forma de un tensor determina sus dimensiones. Puede inspeccionar la forma de un tensor utilizando el atributo .shape
:
123import torch tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(f"Tensor shape: {tensor.shape}")
Cambio de forma de tensores con view
El método .view()
crea una nueva vista del tensor con la forma especificada sin modificar el tensor original. El número total de elementos debe permanecer igual.
1234567import torch tensor = torch.arange(12) # Reshape a tensor to 4x3 reshaped_tensor = tensor.view(4, 3) print(f"Reshaped tensor: {reshaped_tensor}") # Original tensor remains unchanged print(f"Original tensor: {tensor}")
Redimensionamiento de tensores con reshape
El método .reshape()
es similar a .view()
, pero puede manejar casos en los que el tensor no está almacenado de forma contigua en la memoria. Además, no modifica el tensor original.
12345import torch tensor = torch.arange(12) # Reshape a tensor to 6x2 reshaped_tensor = tensor.reshape(6, 2) print(f"Reshaped tensor: {reshaped_tensor}")
Uso de Dimensiones Negativas
Se puede utilizar -1
en la forma para que PyTorch infiere el tamaño de una dimensión según el número total de elementos.
12345import torch tensor = torch.arange(12) # Automatically infer the second dimension inferred_tensor = tensor.view(2, -1) print("Inferred Tensor:", inferred_tensor)
Comprensión de las Vistas de Tensores
Una vista de un tensor comparte los mismos datos con el tensor original. Los cambios en la vista afectan al tensor original y viceversa.
1234567import torch tensor = torch.arange(12) view_tensor = tensor.view(2, 6) view_tensor[0, 0] = 999 # Changes in the view are reflected in the original tensor print("View Tensor:", view_tensor) print("Original Tensor:", tensor)
Cambio de dimensiones
Los siguientes dos métodos permiten agregar o eliminar dimensiones:
unsqueeze(dim)
agrega una nueva dimensión en la posición especificada;squeeze(dim)
elimina dimensiones de tamaño 1.
12345678import torch tensor = torch.arange(12) # Add a new dimension unsqueezed_tensor = tensor.unsqueeze(0) # Add a batch dimension print(f"Unsqueezed tensor: {unsqueezed_tensor.shape}") # Remove a dimension of size 1 squeezed_tensor = unsqueezed_tensor.squeeze(0) print(f"Squeezed Tensor: {squeezed_tensor.shape}")
¡Gracias por tus comentarios!