Formes et Dimensions dans PyTorch
De manière similaire aux tableaux NumPy, la forme d’un tenseur détermine ses dimensions. Il est possible d’inspecter la forme d’un tenseur à l’aide de l’attribut .shape :
123import torch tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(f"Tensor shape: {tensor.shape}")
Remodelage des tenseurs avec view
La méthode .view() crée une nouvelle vue du tenseur avec la forme spécifiée sans modifier le tenseur d’origine. Le nombre total d’éléments doit rester identique.
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}")
Remodelage des tenseurs avec reshape
La méthode .reshape() est similaire à .view(), mais elle peut gérer les cas où le tenseur n'est pas stocké de manière contiguë en mémoire. Elle ne modifie pas non plus le tenseur d'origine.
12345import torch tensor = torch.arange(12) # Reshape a tensor to 6x2 reshaped_tensor = tensor.reshape(6, 2) print(f"Reshaped tensor: {reshaped_tensor}")
Utilisation des dimensions négatives
Vous pouvez utiliser -1 dans la forme pour laisser PyTorch déduire la taille d'une dimension en fonction du nombre total d'éléments.
12345import torch tensor = torch.arange(12) # Automatically infer the second dimension inferred_tensor = tensor.view(2, -1) print("Inferred Tensor:", inferred_tensor)
Comprendre les vues de tenseurs
Une vue d'un tenseur partage les mêmes données que le tenseur d'origine. Les modifications apportées à la vue affectent le tenseur d'origine et inversement.
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)
Modification des dimensions
Les deux méthodes suivantes permettent d’ajouter ou de supprimer des dimensions :
unsqueeze(dim)ajoute une nouvelle dimension à la position spécifiée ;squeeze(dim)supprime les dimensions de taille 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}")
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
What is the difference between view() and reshape() in PyTorch?
Can you explain how negative dimensions work when reshaping tensors?
How do unsqueeze() and squeeze() affect the shape of a tensor?
Awesome!
Completion rate improved to 5
Formes et Dimensions dans PyTorch
Glissez pour afficher le menu
De manière similaire aux tableaux NumPy, la forme d’un tenseur détermine ses dimensions. Il est possible d’inspecter la forme d’un tenseur à l’aide de l’attribut .shape :
123import torch tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(f"Tensor shape: {tensor.shape}")
Remodelage des tenseurs avec view
La méthode .view() crée une nouvelle vue du tenseur avec la forme spécifiée sans modifier le tenseur d’origine. Le nombre total d’éléments doit rester identique.
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}")
Remodelage des tenseurs avec reshape
La méthode .reshape() est similaire à .view(), mais elle peut gérer les cas où le tenseur n'est pas stocké de manière contiguë en mémoire. Elle ne modifie pas non plus le tenseur d'origine.
12345import torch tensor = torch.arange(12) # Reshape a tensor to 6x2 reshaped_tensor = tensor.reshape(6, 2) print(f"Reshaped tensor: {reshaped_tensor}")
Utilisation des dimensions négatives
Vous pouvez utiliser -1 dans la forme pour laisser PyTorch déduire la taille d'une dimension en fonction du nombre total d'éléments.
12345import torch tensor = torch.arange(12) # Automatically infer the second dimension inferred_tensor = tensor.view(2, -1) print("Inferred Tensor:", inferred_tensor)
Comprendre les vues de tenseurs
Une vue d'un tenseur partage les mêmes données que le tenseur d'origine. Les modifications apportées à la vue affectent le tenseur d'origine et inversement.
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)
Modification des dimensions
Les deux méthodes suivantes permettent d’ajouter ou de supprimer des dimensions :
unsqueeze(dim)ajoute une nouvelle dimension à la position spécifiée ;squeeze(dim)supprime les dimensions de taille 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}")
Merci pour vos commentaires !