Keras - class_weight vs sample_weights dans le fit_generator
Dans Keras (à l'aide de TensorFlow comme un back-end) je suis la construction d'un modèle qui travaille avec un vaste ensemble de données qui est d'avoir très instable classes (étiquettes). Pour être en mesure d'exécuter le processus de formation, j'ai créé un générateur qui alimente des blocs de données à la fit_generator
.
Selon la documentation de la fit_generator, la sortie de la génératrice peut être soit le tuple (inputs, targets)
ou le n-uplet (inputs, targets, sample_weights)
. Ayant cela à l'esprit, voici quelques questions:
- Ma compréhension est que
leclass_weight
ce qui concerne le poids de toutes les classes pour l'ensemble du jeu de données alors que
lesample_weights
ce qui concerne le poids de toutes les classes pour chaque morceau
créé par le générateur. Est-ce exact? Si non, quelqu'un peut-il élaborer sur la question? - Est-il nécessaire de donner à la fois le
class_weight
à lafit_generator
et puis lesample_weights
de sortie pour chaque morceau? Si oui, alors pourquoi? Si non, alors qui est le meilleur à donner? - Si je dois donner le
sample_weights
pour chaque partie, comment puis-je carte le poids, si certaines classes sont manquants à partir d'un morceau? Permettez-moi de donner un exemple. Dans l'ensemble de mon jeu de données, j'ai 7 classes possibles (étiquettes). Parce que ces classes sont très déséquilibrés, quand je crée des petits morceaux de données de sortie à partir de lafit_generator
, certaines classes sont absents de la partie. Comment dois-je créer lesample_weights
pour ces morceaux?
- Peut-être la docstring de préciser quelque chose: github.com/fchollet/keras/blob/...
Vous devez vous connecter pour publier un commentaire.
class_weight
affecte le poids relatif de chaque catégorie dans le calcul de la fonction objectif.sample_weights
, comme son nom l'indique, permet en outre de contrôler le poids relatif des échantillons qui appartiennent à la même classe.Cela dépend de votre application. Classe de poids sont utiles lors de la formation sur très inégale des ensembles de données; par exemple, un classificateur à détecter les transactions frauduleuses. Poids d'échantillons sont utiles lorsque vous n'avez pas l'égalité, la confiance dans les échantillons prélevés dans le lot. Un exemple courant est l'exécution de régression sur les mesures de la variable incertitude.
Ce n'est pas un problème.
sample_weights
est définie sur par échantillon et est indépendant de la classe. Pour cette raison, la la documentation états qui(inputs, targets, sample_weights)
doit être de la même longueur.La la fonction
_weighted_masked_objective
dansengine/training.py
a un exemple de sample_weights sont appliquées.sample_weights
correctement?