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.

El modelo Flux.jl siempre produce una salida de 1.0 después de agregar la función de activación Sigmoid.

Mi problema original era que quería que mi modelo solo produjera valores entre 0 y 1 para poder mapear de regreso a mis etiquetas de imágenes categóricas (https://stackoverflow.com/questions/61536132/flux-jl-restrict-variables-between-0-and-1). Así que decidí agregar una función de activación sigmoidea de la siguiente manera:

σ = sigmoid

modelo = Cadena(
  resnet[1:end-2],
  Densa(2048, 1000),
  Densa(1000, 256),
  Densa(256, 2, σ),        # obtenemos 2048 valores, y tenemos 2 clases
);

Sin embargo, ahora mi modelo solo produce valores de 1.0. ¿Alguna idea de por qué o si estoy usando mal la función de activación?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Es posible que el modelo solo esté produciendo 1.0 porque la entrada a la función de activación sigmoidal es lo suficientemente grande que la salida se satura en 1.0. Esto puede suceder si los pesos de la última capa se inicializan con valores grandes o si la entrada a la última capa no está escalada correctamente.

    Para probar esto, puede intentar aplicar la función sigmoidal a algunas entradas de muestra y ver si todas las salidas son 1.0. Además, puede intentar escalar la entrada dividiéndola por su valor máximo o usando un método de escalado diferente.

    Otra posibilidad es que el modelo no se esté entrenando correctamente debido a la función sigmoidal. La función sigmoidal puede hacer que los gradientes se desvanezcan o exploten, especialmente si las entradas no están escaladas correctamente. Para abordar esto, puede intentar usar una función de activación diferente, como las funciones ReLU o softmax, o usar técnicas como la inicialización de pesos o la normalización por lotes para mejorar el proceso de entrenamiento.

Comments are closed.