Kursinhalt
Pytorch Grundlagen
Pytorch Grundlagen
Formen und Dimensionen in PyTorch
Ähnlich wie bei NumPy-Arrays bestimmt die Form eines Tensors seine Dimensionen. Sie können die Form eines Tensors mit dem Attribut .shape
überprüfen:
import torch tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(f"Tensor shape: {tensor.shape}")
Umformen von Tensors mit view
Die Methode .view()
erstellt eine neue Ansicht des Tensors mit der angegebenen Form ohne den ursprünglichen Tensor zu ändern. Die Gesamtanzahl der Elemente muss gleich bleiben.
import 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}")
Umformen von Tensors mit reshape
Die Methode .reshape()
ist ähnlich wie .view()
, kann jedoch Fälle behandeln, in denen der Tensor nicht zusammenhängend im Speicher gespeichert ist. Sie ändert auch nicht den ursprünglichen Tensor.
import torch tensor = torch.arange(12) # Reshape a tensor to 6x2 reshaped_tensor = tensor.reshape(6, 2) print(f"Reshaped tensor: {reshaped_tensor}")
Verwendung negativer Dimensionen
Sie können -1
in der Form verwenden, um PyTorch die Größe einer Dimension basierend auf der Gesamtanzahl der Elemente ableiten zu lassen.
import torch tensor = torch.arange(12) # Automatically infer the second dimension inferred_tensor = tensor.view(2, -1) print("Inferred Tensor:", inferred_tensor)
Verständnis von Tensor-Ansichten
Eine Ansicht eines Tensors teilt die gleichen Daten mit dem ursprünglichen Tensor. Änderungen an der Ansicht wirken sich auf den ursprünglichen Tensor aus und umgekehrt.
import 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)
Ändern von Dimensionen
Die folgenden zwei Methoden ermöglichen es Ihnen, Dimensionen hinzuzufügen oder zu entfernen:
unsqueeze(dim)
fügt eine neue Dimension an der angegebenen Position hinzu;squeeze(dim)
entfernt Dimensionen der Größe 1.
import 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}")
Danke für Ihr Feedback!