Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

773
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda