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.

Cómo devolver solo 0, 1 o 2 en PyTorch

Mi red neuronal está diseñada para predecir un vector de 587 enteros. Esos enteros solo pueden ser iguales a 0, 1 o 2.

¿Es posible forzar a la red a que produzca una salida de 0, 1 o 2? SoftMax no funcionaría porque no solo devuelve un valor entre 0 y 1, sino que también este valor no es necesariamente exactamente 1, sino que puede ser 0,989, etc.

Mi red neuronal, por ahora, es muy simple:

self.l1 = nn.Linear(input_size, hidden_size)
self.relu = nn.ReLU()
self.l2 = nn.Linear(hidden_size, num_classes)

Me preguntaba si existe una capa que corresponda a lo que quiero lograr.

¿O debería hacer 587 redes neuronales que predigan tres clases, en cuyo caso mi pérdida sería la entropía cruzada categórica y mis salidas un vector one-hot como [0, 1, 0] para codificar 1 y [0, 0, 1] para codificar 2?

Atentamente.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como los posibles valores del vector de enteros están limitados a solo 0, 1 y 2, es posible forzar a que la red neuronal produzca esos valores utilizando una función de activación y una función de pérdida diferentes. Una posible solución es utilizar la función de activación SoftMax pero con un parámetro de temperatura muy alto, lo que hará que las salidas sean más cercanas a 0, 1 o 2. Luego, se puede redondear la salida al entero más cercano para obtener el resultado deseado.

    Otra opción es utilizar la función de pérdida de Entropía Cruzada con una función de activación personalizada que mapea la salida a 0, 1 o 2. Por ejemplo, se puede utilizar la siguiente función:

    def custom_activation(x):
        if x < 0.5:
            return 0
        elif x < 1.5:
            return 1
        else:
            return 2
    

    Luego, se puede aplicar esta función de activación a la salida de la red y calcular la pérdida de Entropía Cruzada utilizando los valores reales, que también deben ser mapeados a 0, 1 o 2.

    Utilizar múltiples redes neuronales para predecir tres clases puede no ser la mejor solución, ya que aumentaría la complejidad y el tiempo de entrenamiento. Es mejor explorar otras opciones como las mencionadas anteriormente.

Comments are closed.