es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Necesito aplicar la función Softmax EN ALGUNA PARTE en mi modelo de clasificación multiclase?

Actualmente estoy convirtiendo mi modelo de clasificación binaria en un modelo de clasificación multiclase. Ten paciencia conmigo… Soy muy nuevo en pytorch y en aprendizaje automático.

La mayoría de lo que menciono aquí lo aprendí del siguiente video:

  1. Lo que he leído/sé es que la función CrossEntropyLoss ya tiene implementada la función Softmax, por lo tanto, mi capa de salida es lineal.
  2. Después leí/vi que puedo elegir la predicción de mi modelo tomando el torch.max() de la salida de mi modelo (que proviene de mi última capa de salida lineal). Esto se siente extraño porque tengo algunas salidas negativas y pensé que necesitaba aplicar primero la función Softmax, pero parece funcionar correctamente sin ella.

Entonces, la gran pregunta confusa que tengo es, ¿cuándo debería usar la función Softmax? ¿Debo usarla solo cuando mi función de pérdida no la tenga implementada? PERO entonces elegiría mi predicción basada en las salidas de la capa Softmax, que no sería lo mismo que con la capa de salida lineal.

Gracias a todos por cada respuesta que reciba.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como mencionaste, la función CrossEntropyLoss tiene implementada la función Softmax, por lo que cuando utilizas CrossEntropyLoss para tu problema de clasificación de múltiples clases, no necesitas aplicar la función Softmax por separado. La función Softmax se utiliza para convertir la salida de tu modelo, que puede ser cualquier número real, en una distribución de probabilidad sobre las clases. Si utilizas CrossEntropyLoss, la función Softmax ya se aplica automáticamente a la salida de tu modelo.

    Sin embargo, si decides utilizar una función de pérdida diferente que no tenga la función Softmax implementada, deberás aplicar la función Softmax por separado a la salida de tu modelo antes de utilizarlo para hacer predicciones.

    En cuanto a la función torch.max(), se puede utilizar para elegir la clase con la probabilidad más alta a partir de la salida de tu modelo. Cuando utilizas CrossEntropyLoss, la salida de tu modelo ya se normaliza en una distribución de probabilidad sobre las clases, por lo que puedes utilizar directamente torch.max() para elegir la clase con la probabilidad más alta.

    En resumen, si utilizas CrossEntropyLoss para tu problema de clasificación de múltiples clases, no necesitas aplicar la función Softmax por separado, y puedes utilizar torch.max() para elegir la clase con la probabilidad más alta. Sin embargo, si utilizas una función de pérdida diferente que no tenga la función Softmax implementada, deberás aplicar la función Softmax por separado antes de utilizarla para hacer predicciones.

Comments are closed.