Esperando el próximo curso de Andrew Ng en Coursera, estoy tratando de programar en Python un clasificador con la función softmax en la última capa para tener las diferentes probabilidades. Sin embargo, cuando trato de usarlo en el conjunto de datos CIFAR-10 (entrada: (3072, 10000)), encuentro un desbordamiento cuando calcula los exponenciales. De hecho, tengo números como 5000, 10000 o 25000.
Ya he probado dos cosas:
- resta una constante a la matriz antes de calcular el exponencial, pero tengo una gran diferencia entre los números, así que no puedo hacer eso.
- calcule el exponencial del registro de la matriz pero aún se desborda.
¿Alguien puede ayudarme a evitar este problema?
Gracias
Respuestas:
Observe que para cualquier constante .
Obviamente no es cierto que , pero las versiones normalizadas son las mismas. Su problema es que las s son demasiado grandes, así que reste el mismo número de todas ellas antes de tomar el softmax. A veces las personas establecen que es el máximo de todas las s.miXyo=miXyo- m Xyo metro metro Xyo
fuente