¿Cómo funciona torch.argmax para 4 dimensiones en Pytorch?

En este artículo, vamos a discutir cómo funciona torch.argmax para 4 dimensiones con ejemplos detallados.

Método Torch.argmax()

El método Torch.argmax() acepta un tensor y devuelve los índices de los valores máximos del tensor de entrada en una dimensión/eje especificado. Si el tensor de entrada existe con múltiples valores máximos, la función devolverá el índice del primer elemento máximo. Veamos la sintaxis del método Torch .argmax() junto con sus parámetros. 

Sintaxis Torch.argmax(input_tensor, dim, keepdim=True)

Parámetros

  • input_tensor es un tensor para el que encontramos los índices de valor máximo.
  • dim es un valor entero que especifica la dimensión a reducir. Si no se especifica, se devuelve argmax de la entrada aplanada.
  • keepdim es un valor booleano que especifica si el tensor de salida tiene dim retenido o no.

Devuelve los índices de los valores máximos de un input_tensor en una dimensión.

Trabajando con argmax

En dimensiones superiores, el método torch.argmax devuelve la lista de índices de valores máximos según el eje especificado. podemos entenderlo con un ejemplo de cómo funciona el método argmax() en tensores bidimensionales.

Ejemplo: [[1,10], [20,15]]

El tensor bidimensional tiene solo dos ejes-0,1 (filas y columnas)

  • A lo largo del eje-0 El método argmax verifica el valor máximo en cada columna y devuelve la posición de índice de valor máximo en cada columna. Entonces, en la primera columna 20 está el valor máximo y el valor de índice es 1 y en la segunda columna 15 está el valor máximo y su índice es 1. Entonces, el método argmax devuelve [1,1] como resultado.
  • A lo largo del eje-1 El método argmax verifica el valor máximo en cada fila y devuelve la posición de índice de valor máximo en cada fila. Entonces, en la primera fila, 10 es el valor máximo y el valor de índice es 1 y en la segunda fila, 20 es el valor máximo, su posición de índice es 0. Entonces, el método argmax devuelve [1,0] como resultado.

¿Cómo funciona torch.argmax para 4 dimensiones?

Si no establecimos keepdims=True en el método argmax() para un tensor de entrada de 4 dimensiones con forma [1,2,3,4] y con eje=0, devolverá un tensor de salida de forma [2, 3,4]. Mientras que para axis=1 el método argmax() devuelve un tensor con forma [1,3,4] que será similar a otro eje. por lo tanto, cuando aplicamos el método argmax en cualquier eje/dimensión de forma predeterminada, colapsará ese eje o dimensión porque sus valores se reemplazan por un solo índice.

Si configuramos keepdims=True en el método argmax(), entonces no eliminará esa dimensión, sino que la mantendrá como una. Por ejemplo, un tensor 4-D con forma [1,2,3,4], el método argmax() a lo largo del eje = 1 devuelve un tensor con forma [1,1,3,4].

Ejemplo 1

Aquí, en el siguiente programa, generamos un tensor aleatorio de 4 dimensiones usando el método randn() y lo pasamos al método argmax() y verificamos los resultados a lo largo de los diferentes ejes con keepdims=False o None.

Python3

# import necessary libraries
import torch
  
# define a random 4D tensor
A = torch.randn(1, 2, 3, 4)
print("Tensor-A:", A)
print(A.shape)
  
# use argmax method on 4d tensor along axis-0
print('---Output tensor along axis-0---')
print(torch.argmax(A, axis=0, keepdims=False))
print(torch.argmax(A, axis=0, keepdims=False).shape)
  
# use argmax method on 4d tensor along axis-2
print('---Output tensor along axis-2---')
print(torch.argmax(A, axis=2))
print(torch.argmax(A, axis=2).shape)

Producción

Tensor-A: tensor([[[[ 0.2672, 0.6414, -0.7371, -0.8712],

          [0.9414, -1.2926, -1.0787, 1.7124],

          [-1.1063, -1.7132, 1.5767, -1.7195]],

         [[-0.7871, -1.3260, 0.1592, -0.0543],

          [ 1.8193, -1.8586, -0.6683, 0.3800],

          [ 1.8769, -0.9481, -0.4193, 0.4439]]]])

antorcha.Tamaño([1, 2, 3, 4])

—Tensor de salida a lo largo del eje-0—

tensor([[[0, 0, 0, 0],

         [0, 0, 0, 0],

         [0, 0, 0, 0]],

        [[0, 0, 0, 0],

         [0, 0, 0, 0],

         [0, 0, 0, 0]]])

antorcha.Tamaño([2, 3, 4])

—Tensor de salida a lo largo del eje-2—

tensor([[[1, 0, 2, 1],

         [2, 2, 0, 2]]])

antorcha.Tamaño([1, 2, 4])

Ejemplo 2

Aquí, en este programa, generamos un tensor aleatorio de 4 dimensiones usando el método randn() y lo pasamos al método argmax() y verificamos los resultados a lo largo de los diferentes ejes con el valor de keepdims establecido en True.

Python3

# import necessary libraries
import torch
  
# define a random 4D tensor
A = torch.randn(1, 2, 3, 4)
print("Tensor-A:", A)
print(A.shape)
  
# use argmax method on 4d tensor along axis-2
print('---Output tensor along axis-2---')
print(torch.argmax(A, axis=2, keepdims=True))
print(torch.argmax(A, axis=2, keepdims=True).shape)
  
# use argmax method on 4d tensor along axis-3
print('---Output tensor along axis-3---')
print(torch.argmax(A, axis=3, keepdims=True))
print(torch.argmax(A, axis=3, keepdims=True).shape)

Producción

Tensor-A: tensor([[[[ 0.8328, -0.6209, 0.0998, 0.4570],

          [0.1988, -0.2921, 1.7013, -0.8665],

          [0,6360, 0,0828, 0,3932, 0,2918]],

         [[ 0.0380, -0.0488, 1.0596, 0.8984],

          [-1.5110, -0.1987, 1.0706, 1.5212],

          [-0.0235, 0.3309, 0.8487, -1.9038]]]])

antorcha.Tamaño([1, 2, 3, 4])

—Tensor de salida a lo largo del eje-2—

tensor([[[[0, 2, 1, 0]],

         [[0, 2, 1, 1]]]])

antorcha.Tamaño([1, 2, 1, 4])

—Tensor de salida a lo largo del eje-3—

tensor([[[[0],

          [2],

          [0]],

         [[2],

          [3],

          [2]]]])

antorcha.Tamaño([1, 2, 3, 1])

Publicación traducida automáticamente

Artículo escrito por akhilvasabhaktula03 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 *