Question

Ma sortie souhaitée est pas le codage 1-chaud, mais comme un 10 vecteur D: [1, 0, 1, 0, 1, 0, 0, 1, 1, 1] et l'entrée est comme l'ensemble de données de MNIST normal.

Je veux utiliser tensorflow pour construire un modèle pour apprendre, alors quelle fonction perte dois-je choisir?

Était-ce utile?

La solution

Si vos classes arre pas mutuellement exlcusive, alors vous avez juste plusieurs sorties sigmoïde (au lieu de la fonction softmax comme on le voit dans l'exemple classificateurs MNIST). Chaque sortie sera une probabilité distincte que les ayants droit du réseau à l'appartenance à cette classe.

Pour une fonction de perte correspondante, en tensorflow, vous pouvez utiliser le haut- tf.nn.sigmoid_cross_entropy_with_logits - Notez que cela fonctionne sur les logits - les entrées à la fonction sigmoïde - pour l'efficacité. Le lien explique les mathématiques impliquées.

Vous voulez toujours une fonction sigmoïde sur la couche de sortie trop, quand vous lisez hors les prédictions, mais vous appliquez la fonction de perte ci-dessus pour la entrée de la fonction sigmoïde. Notez que ce n'est pas une exigence de votre problème, vous pouvez facilement écrire une fonction de perte qui fonctionne à partir des sorties sigmoïde, juste le tensorflow construit en a été différemment par écrit pour obtenir un coup de pouce à petite vitesse.

Licencié sous: CC-BY-SA avec attribution
scroll top