En este artículo, discutiremos cómo remodelar un tensor en Pytorch. La remodelación nos permite cambiar la forma con los mismos datos y la misma cantidad de elementos que yo pero con la forma especificada, lo que significa que devuelve los mismos datos que la array especificada, pero con diferentes tamaños de dimensión especificados.
Creando Tensor para demostración:
Código de Python para crear un tensor 1D y mostrarlo.
Python3
# import torch module import torch # create an 1 D etnsor with 8 elements a = torch.tensor([1,2,3,4,5,6,7,8]) # display tensor shape print(a.shape) # display tensor a
Producción:
torch.Size([8]) tensor([1, 2, 3, 4, 5, 6, 7, 8])
Método 1: Usar el método remodelar()
Este método se usa para remodelar el tensor dado en una forma dada (cambiar las dimensiones)
Sintaxis: tensor.reshape([fila,columna])
dónde,
- tensor es el tensor de entrada
- fila representa el número de filas en el tensor reformado
- columna representa el número de columnas en el tensor reformado
Ejemplo 1: programa Python para remodelar un tensor 1 D a un tensor bidimensional.
Python3
# import torch module import torch # create an 1 D etnsor with 8 elements a = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8]) # display tensor shape print(a.shape) # display actual tensor print(a) # reshape tensor into 4 rows and 2 columns print(a.reshape([4, 2])) # display shape of reshaped tensor print(a.shape)
Producción:
torch.Size([8]) tensor([1, 2, 3, 4, 5, 6, 7, 8]) tensor([[1, 2], [3, 4], [5, 6], [7, 8]]) torch.Size([8])
Ejemplo 2: código de Python para remodelar tensores en 4 filas y 2 columnas
Python3
# import torch module import torch # create an 1 D etnsor with 8 elements a = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8]) # display tensor shape print(a.shape) # display actual tensor print(a) # reshape tensor into 4 rows and 2 columns print(a.reshape([4, 2])) # display shape print(a.shape)
Producción:
torch.Size([8]) tensor([1, 2, 3, 4, 5, 6, 7, 8]) tensor([[1, 2], [3, 4], [5, 6], [7, 8]]) torch.Size([8])
Ejemplo 3: código de Python para remodelar el tensor en 8 filas y 1 columna.
Python3
# import torch module import torch # create an 1 D etnsor with 8 elements a = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8]) # display tensor shape print(a.shape) # display actual tensor print(a) # reshape tensor into 8 rows and 1 column print(a.reshape([8, 1])) # display shape print(a.shape)
Producción:
torch.Size([8]) tensor([1, 2, 3, 4, 5, 6, 7, 8]) tensor([[1], [2], [3], [4], [5], [6], [7], [8]]) torch.Size([8])
Método 2: Usar el método flatten()
flatten() se usa para aplanar un tensor N-Dimensional a un tensor 1D.
Sintaxis: torch.flatten(tensor)
Donde, tensor es el tensor de entrada
Ejemplo 1: código Python para crear un tensor con elementos 2D y aplanar este vector
Python3
# import torch module import torch # create an 2 D tensor with 8 elements each a = torch.tensor([[1,2,3,4,5,6,7,8], [1,2,3,4,5,6,7,8]]) # display actual tensor print(a) # flatten a tensor with flatten() function print(torch.flatten(a))
Producción:
tensor([[1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 4, 5, 6, 7, 8]]) tensor([1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8])
Ejemplo 2: código Python para crear un tensor con elementos 3D y aplanar este vector
Python3
# import torch module import torch # create an 3 D tensor with 8 elements each a = torch.tensor([[[1,2,3,4,5,6,7,8], [1,2,3,4,5,6,7,8]], [[1,2,3,4,5,6,7,8], [1,2,3,4,5,6,7,8]]]) # display actual tensor print(a) # flatten a tensor with flatten() function print(torch.flatten(a))
Producción:
tensor([[[1, 2, 3, 4, 5, 6, 7, 8],
[1, 2, 3, 4, 5, 6, 7, 8]],
[[1, 2, 3, 4, 5, 6, 7, 8],
[1, 2, 3, 4, 5, 6, 7, 8]]])
tensor([1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8 ,
1, 2, 3, 4, 5, 6, 7, 8])
Método 3: Usar el método view()
view() se usa para cambiar el tensor en filas y columnas de IE de formato bidimensional. Tenemos que especificar el número de filas y el número de columnas a visualizar.
Sintaxis: tensor.view(no_of_rows,no_of_columns)
dónde,
- tensor es un tensor unidimensional de entrada
- no_of_rows es el número total de filas que se ve el tensor
- no_of_columns es el número total de columnas que se visualiza el tensor.
Ejemplo 1: Programa en Python para crear un tensor con 12 elementos y vista con 3 filas y 4 columnas y viceversa.
Python3
# importing torch module import torch # create one dimensional tensor 12 elements a=torch.FloatTensor([24, 56, 10, 20, 30, 40, 50, 1, 2, 3, 4, 5]) # view tensor in 4 rows and 3 columns print(a.view(4, 3)) # view tensor in 3 rows and 4 columns print(a.view(3, 4))
Producción:
tensor([[24., 56., 10.], [20., 30., 40.], [50., 1., 2.], [ 3., 4., 5.]]) tensor([[24., 56., 10., 20.], [30., 40., 50., 1.], [ 2., 3., 4., 5.]])
Ejemplo 2: código de Python para cambiar la vista de un tensor en 10 filas y una columna y viceversa.
Python3
# importing torch module import torch # create one dimensional tensor 10 elements a = torch.FloatTensor([24, 56, 10, 20, 30, 40, 50, 1, 2, 3]) # view tensor in 10 rows and 1 column print(a.view(10, 1)) # view tensor in 1 row and 10 columns print(a.view(1, 10))
Producción:
tensor([[24.], [56.], [10.], [20.], [30.], [40.], [50.], [ 1.], [ 2.], [ 3.]]) tensor([[24., 56., 10., 20., 30., 40., 50., 1., 2., 3.]])
Método 4: Usando el método resize()
Esto se usa para cambiar el tamaño de las dimensiones del tensor dado.
Sintaxis: tensor.resize_(no_of_tensors, no_of_rows, no_of_columns)
dónde:
- tensor es el tensor de entrada
- no_of_tensors representa el número total de tensores que se generarán
- no_of_rows representa el número total de filas en el nuevo tensor redimensionado
- no_of_columns representa el número total de columnas en el nuevo tensor redimensionado
Ejemplo 1: código de Python para crear un tensor D vacío y crear 4 nuevos tensores con 4 filas y 5 columnas
Python3
# importing torch module import torch # create one dimensional tensor a = torch.Tensor() # resize the tensor to 4 tensors. # each tensor with 4 rows and 5 columns print(a.resize_(4, 4, 5))
Producción:
Ejemplo 2: Cree un tensor 1 D con elementos y cambie el tamaño a 3 tensores con 2 filas y 2 columnas
Python3
# importing torch module import torch # create one dimensional a = torch.Tensor() # resize the tensor to 2 tensors. # each tensor with 4 rows and 2 columns print(a.resize_(2, 4, 2))
Producción:
Método 5: Usar el método unsqueeze()
Esto se usa para remodelar un tensor agregando nuevas dimensiones en posiciones dadas.
Sintaxis: tensor.unsqueeze(posición)
donde, position es el índice de dimensión que comenzará desde 0.
Ejemplo 1: código de Python para crear tensores 2D y agregar una dimensión en 0 la dimensión.
Python3
# importing torch module import torch # create two dimensional tensor a = torch.Tensor([[2,3], [1,2]]) # display shape print(a.shape) # add dimension at 0 position added = a.unsqueeze(0) print(added.shape)
Producción:
torch.Size([2, 2]) torch.Size([1, 2, 2])
Ejemplo 2: código Python para crear un tensor 1 D y agregar dimensiones
Python3
# importing torch module import torch # create one dimensional tensor a = torch.Tensor([1, 2, 3, 4, 5]) # display shape print(a.shape) # add dimension at 0 position added = a.unsqueeze(0) print(added.shape) # add dimension at 1 position added = a.unsqueeze(1) print(added.shape)
Producción:
torch.Size([5]) torch.Size([1, 5]) torch.Size([5, 1])
Publicación traducida automáticamente
Artículo escrito por deepakresearch222 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA