Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

764
Vistas
Pytorch softmax: ¿Qué dimensión usar?

La función torch.nn.functional.softmax toma dos parámetros: input y dim . De acuerdo con su documentación, la operación softmax se aplica a todas las porciones de input a lo largo del dim especificado, y las reescalará para que los elementos se encuentren en el rango (0, 1) y sumen 1.

Deje que la entrada sea:

 input = torch.randn((3, 4, 5, 6))

Supongamos que quiero lo siguiente, para que cada entrada en esa matriz sea 1:

 sum = torch.sum(input, dim = 3) # sum's size is (3, 4, 5, 1)

¿Cómo debo aplicar softmax?

 softmax(input, dim = 0) # Way Number 0 softmax(input, dim = 1) # Way Number 1 softmax(input, dim = 2) # Way Number 2 softmax(input, dim = 3) # Way Number 3

Mi intuición me dice que es el último, pero no estoy seguro. El inglés no es mi primer idioma y el uso de la palabra along me pareció confuso por eso.

No tengo muy claro qué significa "a lo largo", así que usaré un ejemplo que podría aclarar las cosas. Supongamos que tenemos un tensor de tamaño (s1, s2, s3, s4), y quiero que esto suceda

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La respuesta de Steven no es correcta. Vea la instantánea a continuación. En realidad es al revés.

ingrese la descripción de la imagen aquí

Imagen transcrita como código:

 >>> x = torch.tensor([[1,2],[3,4]],dtype=torch.float) >>> F.softmax(x,dim=0) tensor([[0.1192, 0.1192], [0.8808, 0.8808]]) >>> F.softmax(x,dim=1) tensor([[0.2689, 0.7311], [0.2689, 0.7311]])
over 4 years ago · Santiago Trujillo Denunciar

0

La forma más fácil que se me ocurre para hacerte entender es: digamos que te dan un tensor de forma (s1, s2, s3, s4) y, como mencionaste, quieres que la suma de todas las entradas a lo largo del último eje sea 1.

 sum = torch.sum(input, dim = 3) # input is of shape (s1, s2, s3, s4)

Entonces deberías llamar al softmax como:

 softmax(input, dim = 3)

Para entender fácilmente, puede considerar un tensor de forma 4d (s1, s2, s3, s4) como un tensor o matriz de forma 2d (s1*s2*s3, s4) . Ahora, si desea que la matriz contenga valores en cada fila (eje = 0) o columna (eje = 1) que suman 1, simplemente puede llamar a la función softmax en el tensor 2d de la siguiente manera:

 softmax(input, dim = 0) # normalizes values along axis 0 softmax(input, dim = 1) # normalizes values along axis 1

Puedes ver el ejemplo que Steven mencionó en su respuesta .

over 4 years ago · Santiago Trujillo Denunciar

0

Consideremos el ejemplo en dos dimensiones.

 x = [[1,2], [3,4]]

¿Quieres que tu resultado final sea

 y = [[0.27,0.73], [0.27,0.73]]

o

 y = [[0.12,0.12], [0.88,0.88]]

Si es la primera opción, quiere dim = 1. Si es la segunda opción, quiere dim = 0.

Observe que las columnas o la dimensión cero se normalizan en el segundo ejemplo, por lo tanto, se normalizan a lo largo de la dimensión cero.

Actualizado el 10 de julio de 2018: para reflejar que la dimensión cero se refiere a las columnas en pytorch.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda