J'ai écrit un script pour faire la classification d'une seule image d'entrée en utilisant un modèle que j'ai entraîné avec MxNet. Pour classifier l'image entrante, je les transfère dans le réseau.MxNet: les formes d'étiquettes ne correspondent pas aux noms spécifiés par label_names
Bref voici ce que je fais:
symbol, arg_params, aux_params = mx.model.load_checkpoint('model-prefix', 42)
model = mx.mod.Module(symbol=symbol, context=mx.cpu())
model.bind(data_shapes=[('data', (1, 3, 224, 244))], for_training=False)
model.set_params(arg_params, aux_params)
# ... loading the image & resizing ...
# img is the image to classify as numpy array of shape (3, 244, 244)
Batch = namedtuple('Batch', ['data'])
self._model.forward(Batch(data=[mx.nd.array(img)]))
probabilities = self._model.get_outputs()[0].asnumpy()
print(str(probabilities))
Cela fonctionne très bien, sauf que je reçois l'avertissement suivant
UserWarning: Data provided by label_shapes don't match names specified by label_names ([] vs. ['softmax_label'])
Que dois-je changer pour éviter d'avoir cet avertissement? Il n'est pas clair pour moi à quoi servent les paramètres label_shapes et étiquette_names, et ce à quoi je m'attends pour les remplir.
Note: J'ai trouvé du fil à leur sujet, mais aucun ne m'a permis de résoudre le problème. De même, la documentation MxNet ne fournit pas beaucoup de détails sur ce que sont ces paramètres et sur la façon dont ils sont censés être remplis.
Merci pour l'aide. J'ai essayé ça. Il supprime l'avertissement mais le script ne fonctionne plus. Avec 'label_name = None' le script échoue maintenant avec' RuntimeError: softmax_label n'est pas présenté'. Il vient de 'Fichier" /usr/local/lib/python2.7/site-packages/mxnet-0.9.5-py2.7.egg/mxnet/module/module.py ", ligne 264, dans _impl raise RuntimeError ("% s n'est pas présenté"% name) 'Une idée de ce qui se passe? Je suis un peu désemparé sur la signification de ces différents paramètres d'étiquette. –
Pouvez-vous définir 'allow_missing = True' pour le module? 'model.set_params (arg_params, aux_params, allow_missing = True)' –
Merci @ indhu-bharathi pour la réponse et l'explication. Ajoutant aussi allow_missing à true fait marcher. –