En Tensorflow, si uso sigmoid_cross_entropy_loss, ¿cómo puedo calcular la etiqueta que estoy prediciendo? (No puedo usar tf.argmax como en softmax_cross_entropy).

ACTUALIZAR:

Lo sentimos, los comentarios parecen haber desaparecido o hay algunas peculiaridades de quora extrañas:

Ah, creo que pensé en una manera.
Digamos que sus logits (post sigmoide y todo, por lo tanto, sus predicciones) están en x.

crea un tensor y donde todos los valores son 0.5

dejar x1 = x – y

Ahora recorte x1 en 0 y 1 usando: x2 = tf.clip_by_value (x1, 0, 1)

Ahora, tf.where (x2) debería darte valores Verdadero / Falso para cada índice.

Esencialmente resté el umbral y moví los valores a 0, 1. tf.where recupera donde los valores son verdaderos.

—-

Tome los logits, llame a sigmoid sobre ellos y una vez que obtenga los valores de tensorflow, puede hacer np.where(x > 0.5) (por ejemplo, si 0.5 es el umbral).

Su problema debe ser un problema de múltiples etiquetas (una x dada puede tener múltiples etiquetas); de lo contrario, sigmoid_cross_entropy_loss no tiene sentido.

Asumiré que la entrada de la entropía cruzada sigmoidea son las preactivaciones y el nombre de la variable está out . Todo lo que necesitas es

Preds = tf.cast (tf.Sigmoid (out)> = thres, tf.int8)

Donde hay un umbral. La elección habitual es 0.5 pero puede ajustar para adaptarse a su problema.