Reformando un tensor en Pytorch

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *