Ich möchte das mit Chainer trainierte Imagenet-Modell lesen und mit Testdaten auswerten. Die Umgebung ist OS X (10.9.5 CPU), Chainer1.6.0, Python2.7.10. Es mag einen ähnlichen Artikel geben, aber ich habe ungefähr 5 Sekunden lang danach gesucht und konnte ihn nicht finden, also werde ich ihn schreiben, bitte vergib mir.
** Modelltraining **
Sie können nicht testen, ohne vorher das Modell zu trainieren. Informationen zur Trainingsmethode finden Sie unter http://hi-king.hatenablog.com/entry/2015/06/11/021144. Wenn Sie jedoch den an den obigen Link angehängten Code mit Ihrem eigenen Bild aus Caltech101 ausprobieren, wird die Größe des Bildes angegeben Die Änderung selbst wurde korrekt durchgeführt, aber das resultierende Bild wurde wie unten gezeigt verzerrt. Das obere ist das Bild vor der Änderung und das untere ist das Bild nach der Änderung (dasselbe Objekt wird dupliziert).
Es mag kein Problem geben, aber ich war neugierig darauf, also habe ich es ein wenig vorverarbeitet. Wenn die Feineinstellung problematisch ist, können Sie meiner Meinung nach .resize ((256,256)) von PIL.Image verwenden.
** Vorbereitung auf den Test **
Bereiten Sie sich nach dem Training auf den Test vor. Die folgenden vier Punkte sind für den Test erforderlich. Es ist fast das gleiche wie die Vorbehandlung während des Trainings.
** Bewertung des Modells **
Ich habe es geschrieben, indem ich mir den offiziellen Code von Chainer und den Code anderer Beispiele angesehen habe. Ich habe gerade chainer / examples / imagenet / train_imagenet.py zum Testen neu geschrieben, daher denke ich, dass es eine Menge nutzloser Verarbeitung gibt, aber es hat in meiner Umgebung funktioniert. Geben Sie nach den obigen Vorbereitungen den Code ↓ ein (* Ich habe die Details übersprungen, ignorieren Sie also die test_batchsize des Befehlszeilenarguments. Wenn dies nicht der Standardwert (= 1) ist, kann es nicht korrekt ausgewertet werden.) https://github.com/fullflu/ML/blob/master/evaluate_chainer_imagenet.py
python evaluate_chainer_imagenet.py -g -1 test.txt
Wenn Sie tippen, wird ein Fehler (wie sehr Sie die Vorhersage im Durchschnitt verpasst haben) mit dem folgenden Gefühl angezeigt. Der Inhalt des Prozesses besteht darin, das Modell nach dem Importieren des Modells mit "serializers.load_npz (path_to_model, model)" zu lesen und "model (x, t)" zur Vorhersage und Auswertung zu schreiben. Praktisch.
Load model from model
{"iteration": 19, "loss": 0.7662104054501182, "type": "test", "error": 0.4736842105263158}
Da ungefähr die Hälfte entfernt wird, können Sie sehen, dass Sie nicht ernsthaft lernen.