J'essaie de convertir mon modèle de classification d'images binaires en Multilabel et j'ai eu des erreurs avec une matrice numpie en disant s'attend à ce que des valeurs 2-dimensions puissent que quelqu'un puisse m'aider à modifier le code. fort> p>
J'ai essayé d'utiliser Multilabelbinazier mais je n'avais pas de chance avec qui que quelqu'un ne puisse personne ici m'aider avec ça? p>
erreurs # Utilisation p>
xxx pré> blockQuote>
3 Réponses :
Vous avez utilisé le nombre d'unités dans le dernier
Il y a trois points
1. premier: étiquette forme strong>
Observez votre forme d'étiquette. De votre code, je suppose que votre forme d'étiquette doit être une dimensionnelle comme (5000,) code> Vous pouvez le voir à l'aide de
étiquettes.shape code>.
Pour ce faire, utilisez deux dimensions, utilisez ce
2. dense code> couche 2, donc essentiellement une classification multiclass se comporter comme une classification binaire. Je recommande si vous faites une classification binaire, utilisez 1 unité au dernier
dense code> couche et activation autre que
softmax code>. Si votre ensemble de données ait 3 ou plus de 3 classe, utilisez une couche
dense code> avec le nombre de classes de sortie et
softmax code> activation. Mais pour de tels cas, les étiquettes doivent être
une fois codées à chaud code>.
3. Troisième: Modifier la fonction de perte forte>
Si vous allez toujours utiliser la sortie 2 unité pour la dernière couche dense. Changez votre fonction de perte de binaire_crossentropy code> à
Catégorical_crossentropy Code> P> P>
dépend de votre version TF, mais vous devriez peut-être utiliser le fit_generator ( https://www.tensorflow.org/apl_docs/python/tf/keras/model#fit_generator ) au lieu de model.fit Si votre entrée est un générateur. P>
Vérifiez également quelles réponses antérieures mentionnées p>
Je pense que vous avez tort dans p>
Conversion Liste de la matrice numpie en une seule matrice numpue, vous pouvez utiliser P>
ou p>
ou p>
une autre réponse < / p> li>
après avoir utilisé lb.fit_transform (étiquettes), vous n'avez pas besoin d'utiliser to_Catégorical (étiquettes) p> li>
Ce n'est pas clair que voulez-vous, multi-étiquettes ou multi-classe? c'est différent. Si vous souhaitez passer à un boîtier multi-étiquettes, le binaire_crossentropy est l'une des solutions. Mais vous allez confondre la précision (valeur par défaut) en tant que métrique, il est faux dans Multi-L'étiquette, vous pouvez utiliser le calcul de précision pour la classification multi-étiquettes. Et n'utilisez pas Softmax dans la sortie d'activation finale, veuillez utiliser Sigmoid. Ou si sa classe multiplication change la perte à Catégorical_crossentropy si son étiquette est un codage à chaud, ou à SParse_Categorical_crossentroptropie si son étiquette n'est pas un codage à chaud. P> LI>
Si sa classification d'image binaire précédente, le modèle de sortie doit être de 1 (1 ou 0) non pas 2 p> li>
ol>
J'espère que cette réponse devient votre solution p> data = np.stack (données, axe = 0) / 255 code> p>
data = np.concaténate (données, axe = 0) code> # Il retournera la forme (bain_size, dim_height * dim_width, canal) puis remodeler les données p>
data.leshape (baignoire, dim_height, dim_width, canal) code> p>
data = np.vstack (données) /255.0 code> p>
Qu'est-ce que vous voulez faire? Votre perte est toujours binaire_crossentropy afin que vous voulez donc prédire 2 classes? Ma devin initiale est que votre étiquette n'est pas la bonne forme. Dites que vous avez 4 cours, ne voulez-vous pas que la première étiquette soit [0,1,0,0] s'il s'agit de la deuxième classe?