Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Formes et Dimensions dans PyTorch | Introduction à PyTorch
Essentiels de PyTorch

bookFormes 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 :

123
import torch tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(f"Tensor shape: {tensor.shape}")
copy

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.

1234567
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}")
copy

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.

12345
import torch tensor = torch.arange(12) # Reshape a tensor to 6x2 reshaped_tensor = tensor.reshape(6, 2) print(f"Reshaped tensor: {reshaped_tensor}")
copy

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.

12345
import torch tensor = torch.arange(12) # Automatically infer the second dimension inferred_tensor = tensor.view(2, -1) print("Inferred Tensor:", inferred_tensor)
copy

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.

1234567
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)
copy

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.
12345678
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}")
copy
question mark

Quelle sera la forme du tenseur après l'exécution du code suivant ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 9

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

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

bookFormes 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 :

123
import torch tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(f"Tensor shape: {tensor.shape}")
copy

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.

1234567
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}")
copy

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.

12345
import torch tensor = torch.arange(12) # Reshape a tensor to 6x2 reshaped_tensor = tensor.reshape(6, 2) print(f"Reshaped tensor: {reshaped_tensor}")
copy

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.

12345
import torch tensor = torch.arange(12) # Automatically infer the second dimension inferred_tensor = tensor.view(2, -1) print("Inferred Tensor:", inferred_tensor)
copy

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.

1234567
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)
copy

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.
12345678
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}")
copy
question mark

Quelle sera la forme du tenseur après l'exécution du code suivant ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 9
some-alt