Je veux lire le modèle imagenet formé avec Chainer et l'évaluer avec des données de test. L'environnement est OS X (10.9.5 CPU), Chainer1.6.0, Python2.7.10. Il y a peut-être un article similaire, mais je l'ai recherché pendant environ 5 secondes et je ne l'ai pas trouvé, alors je vais l'écrire, pardonnez-moi s'il vous plaît.
** Formation modèle **
Vous ne pouvez pas tester sans d'abord entraîner le modèle. Pour la méthode de formation, veuillez vous référer à http://hi-king.hatenablog.com/entry/2015/06/11/021144. Cependant, si vous essayez le code joint au lien ci-dessus avec votre propre image tirée de Caltech101, la taille de l'image Le changement lui-même a été effectué correctement, mais l'image résultante a été déformée comme indiqué ci-dessous. Le haut est l'image avant le changement et le bas est l'image après le changement (le même objet est dupliqué).
Il n'y a peut-être pas de problème tel quel, mais j'étais curieux à ce sujet, alors je l'ai un peu pré-traité. Si l'ajustement fin est gênant, je pense que vous pouvez utiliser .resize ((256,256)) de PIL.Image.
** Préparation au test **
Après la formation, préparez-vous pour le test. Les quatre éléments suivants sont requis pour le test. C'est presque le même que le prétraitement pendant l'entraînement.
** Évaluation du modèle **
Je l'ai écrit en regardant le code officiel de Chainer et le code d'autres exemples. Depuis que je viens de réécrire chainer / examples / imagenet / train_imagenet.py pour les tests, je pense qu'il y a beaucoup de traitements inutiles, mais cela a fonctionné dans mon environnement. Après avoir effectué les préparatifs ci-dessus, mettez le code de ↓ (* J'ai ignoré les détails, donc ignorez le test_batchsize de l'argument de ligne de commande. S'il est défini sur autre chose que la valeur par défaut (= 1), il ne peut pas être évalué correctement) https://github.com/fullflu/ML/blob/master/evaluate_chainer_imagenet.py
python evaluate_chainer_imagenet.py -g -1 test.txt
Si vous tapez, une erreur (combien vous avez manqué la prédiction en moyenne) sera affichée avec le sentiment suivant. Le contenu du processus est de lire le modèle avec serializers.load_npz (path_to_model, model)
après l'importation du modèle, et d'écrire model (x, t)
pour la prédiction et l'évaluation. Pratique.
Load model from model
{"iteration": 19, "loss": 0.7662104054501182, "type": "test", "error": 0.4736842105263158}
Étant donné qu'environ la moitié est supprimée, vous pouvez voir que vous n'apprenez pas sérieusement.