Forme e Dimensioni in PyTorch
Analogamente agli array NumPy, la forma di un tensore ne determina le dimensioni. È possibile ispezionare la forma di un tensore utilizzando l'attributo .shape:
123import torch tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(f"Tensor shape: {tensor.shape}")
Rimodellare i tensori con view
Il metodo .view() crea una nuova vista del tensore con la forma specificata senza modificare il tensore originale. Il numero totale di elementi deve rimanere invariato.
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}")
Rimodellare i tensori con reshape
Il metodo .reshape() è simile a .view(), ma può gestire casi in cui il tensore non è memorizzato in modo contiguo in memoria. Inoltre, non modifica il tensore originale.
12345import torch tensor = torch.arange(12) # Reshape a tensor to 6x2 reshaped_tensor = tensor.reshape(6, 2) print(f"Reshaped tensor: {reshaped_tensor}")
Utilizzo delle Dimensioni Negative
È possibile utilizzare -1 nella forma per permettere a PyTorch di dedurre la dimensione di una delle dimensioni in base al numero totale di elementi.
12345import torch tensor = torch.arange(12) # Automatically infer the second dimension inferred_tensor = tensor.view(2, -1) print("Inferred Tensor:", inferred_tensor)
Comprensione delle View dei Tensori
Una view di un tensore condivide gli stessi dati con il tensore originale. Le modifiche apportate alla view influenzano il tensore originale e 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)
Modifica delle dimensioni
Le seguenti due funzioni permettono di aggiungere o rimuovere dimensioni:
unsqueeze(dim)aggiunge una nuova dimensione nella posizione specificata;squeeze(dim)rimuove le dimensioni di dimensione 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}")
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 5
Forme e Dimensioni in PyTorch
Scorri per mostrare il menu
Analogamente agli array NumPy, la forma di un tensore ne determina le dimensioni. È possibile ispezionare la forma di un tensore utilizzando l'attributo .shape:
123import torch tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(f"Tensor shape: {tensor.shape}")
Rimodellare i tensori con view
Il metodo .view() crea una nuova vista del tensore con la forma specificata senza modificare il tensore originale. Il numero totale di elementi deve rimanere invariato.
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}")
Rimodellare i tensori con reshape
Il metodo .reshape() è simile a .view(), ma può gestire casi in cui il tensore non è memorizzato in modo contiguo in memoria. Inoltre, non modifica il tensore originale.
12345import torch tensor = torch.arange(12) # Reshape a tensor to 6x2 reshaped_tensor = tensor.reshape(6, 2) print(f"Reshaped tensor: {reshaped_tensor}")
Utilizzo delle Dimensioni Negative
È possibile utilizzare -1 nella forma per permettere a PyTorch di dedurre la dimensione di una delle dimensioni in base al numero totale di elementi.
12345import torch tensor = torch.arange(12) # Automatically infer the second dimension inferred_tensor = tensor.view(2, -1) print("Inferred Tensor:", inferred_tensor)
Comprensione delle View dei Tensori
Una view di un tensore condivide gli stessi dati con il tensore originale. Le modifiche apportate alla view influenzano il tensore originale e 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)
Modifica delle dimensioni
Le seguenti due funzioni permettono di aggiungere o rimuovere dimensioni:
unsqueeze(dim)aggiunge una nuova dimensione nella posizione specificata;squeeze(dim)rimuove le dimensioni di dimensione 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}")
Grazie per i tuoi commenti!