Formas e Dimensões no PyTorch
De forma semelhante aos arrays do NumPy, a forma de um tensor determina suas dimensões. É possível inspecionar a forma de um tensor utilizando o atributo .shape:
123import torch tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(f"Tensor shape: {tensor.shape}")
Redimensionamento de tensores com view
O método .view() cria uma nova visualização do tensor com a forma especificada sem modificar o tensor original. O número total de elementos deve permanecer o mesmo.
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}")
Redimensionamento de tensores com reshape
O método .reshape() é semelhante ao .view(), mas pode lidar com casos em que o tensor não está armazenado de forma contígua na memória. Ele também não modifica o 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}")
Utilizando Dimensões Negativas
É possível utilizar -1 na forma para que o PyTorch inira o tamanho de uma dimensão com base no 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)
Compreendendo as Views de Tensores
Uma view de um tensor compartilha os mesmos dados com o tensor original. Alterações feitas na view afetam o tensor original e vice-versa.
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)
Alterando Dimensões
Os dois métodos a seguir permitem adicionar ou remover dimensões:
unsqueeze(dim)adiciona uma nova dimensão na posição especificada;squeeze(dim)remove dimensões de tamanho 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}")
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Formas e Dimensões no PyTorch
Deslize para mostrar o menu
De forma semelhante aos arrays do NumPy, a forma de um tensor determina suas dimensões. É possível inspecionar a forma de um tensor utilizando o atributo .shape:
123import torch tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) print(f"Tensor shape: {tensor.shape}")
Redimensionamento de tensores com view
O método .view() cria uma nova visualização do tensor com a forma especificada sem modificar o tensor original. O número total de elementos deve permanecer o mesmo.
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}")
Redimensionamento de tensores com reshape
O método .reshape() é semelhante ao .view(), mas pode lidar com casos em que o tensor não está armazenado de forma contígua na memória. Ele também não modifica o 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}")
Utilizando Dimensões Negativas
É possível utilizar -1 na forma para que o PyTorch inira o tamanho de uma dimensão com base no 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)
Compreendendo as Views de Tensores
Uma view de um tensor compartilha os mesmos dados com o tensor original. Alterações feitas na view afetam o tensor original e vice-versa.
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)
Alterando Dimensões
Os dois métodos a seguir permitem adicionar ou remover dimensões:
unsqueeze(dim)adiciona uma nova dimensão na posição especificada;squeeze(dim)remove dimensões de tamanho 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}")
Obrigado pelo seu feedback!