J'essaie de comprendre comment fonctionne tf.nn.sparse_softmax_cross_entropy_with_logits
.tf.nn.sparse_softmax_cross_entropy_with_logits - étiquettes sans codage à chaud dans tensorflow
description dit:
A common use case is to have logits of shape [batch_size, num_classes]
and labels of shape [batch_size]. But higher dimensions are supported.
Il suggère donc que nous pouvons nourrir des étiquettes sous forme brute, par exemple [1,2,3]
.
Maintenant, puisque tous les calculs sont effectués par lot je crois que ce qui suit est possible:
Dans tous les cas, nous supposons la taille du lot égal à deux.
Cas 1 (avec un lot): logit:
0.4 0.2 0.4
0.3 0.3 0.4
étiquettes correspoding:
2
3
Je devine que les étiquettes pourraient être codifiés comme
[1 0 0]
[0 1 0]
Cas n ° 2 (avec un autre lot): logit:
0.4 0.2 0.4
0.3 0.3 0.4
étiquettes correspoding:
1
2
Je devine que les étiquettes peuvent être codées (je ne vois pas ce qui nous empêche de ce codage, à moins que tensorflow garde trace comment codé avant)
[1 0 0]
[0 1 0]
Nous avons donc deux codages différents. Est-il sûr de supposer que le flux tensoriel garde le codage cohérent d'un lot à l'autre?
Merci beaucoup! donc mes étiquettes doivent être d'un certain format? Que faire si mes étiquettes sont 34, 45, 133 et que nous avons seulement trois classes – user1700890
@ user1700890 Oui, vos étiquettes doivent être des entiers entre 0 et number_of_classes - 1. Si vos étiquettes sont 34, 45 et 133, vous devrez les coder comme 0 , 1 et 2 vous-même. – BlueSun