2017-06-09 1 views
0

J'ai implémenté un simple réseau cnn pour la classification d'images (classification binaire). J'utilise tensorflow en Python. J'utilise tf.softmax_cross_entropy_with logits comme une fonction de coût. Je nourris la fonction de coût avec des logits non normalisés de la couche de sortie de mon modèle. La fonction devrait-elle produire des probabilités normalisées, ou ai-je tort?Sortie de tf.softmax_cross_entroy_with_logits non normalisée?

Lors de la formation de mon modèle, j'imprime le coût de chaque exemple. Si le modèle prédit correctement la sortie, le coût est égal à 0,0, sinon le coût est très grand, valeur non normalisée). Alors que la fonction 'softmaxes' entrée avant de calculer l'entropie croisée, pourquoi la sortie est non normalisée?

Répondre

2

Vous confondez l'entropie croisée (votre fonction de perte) avec softmax (la sortie "virtuelle" de votre réseau - voir ci-dessous). Softmax est normalisé, mais l'entropie croisée ne l'est pas - il peut prendre des valeurs arbitrairement élevées pour pénaliser les mauvaises prédictions. Lorsque vous utilisez une sortie réseau non normalisée en combinaison avec tf.softmax_cross_entropy_with logits, vous n'observez pas la sortie softmax: elle est traitée dans la fonction de coût et reste virtuelle. Pour voir le softmax, vous pouvez le calculer explicitement en utilisant tf.nn.softmax sur la sortie non normalisée de votre réseau.

+0

Merci pour la réponse. Donc les coûts comme des dizaines de milliers ou des millions n'ont rien d'extraordinaire? – Marcin

+0

Ils sont possibles mais inhabituels. C'est peut-être un signe que vous utilisez la somme plutôt que la moyenne pour réduire votre perte. – user1735003

+0

Je suis en train de régulariser les poids et la couche de décrochage ajoutée, mais le problème persiste. Est-il possible que d'énormes logits à la sortie de cnn soient causés par un très petit ensemble de données (500 exemples?) J'ai vérifié softmax des logits et la fonction retourne toujours 1.0 ou 0.0 - rien entre les deux. – Marcin