Aidemy 2020/11/10
Hallo, es ist ja! Ich bin eine knusprige Literaturschule, aber ich war an den Möglichkeiten der KI interessiert, also ging ich zur AI-spezialisierten Schule "Aidemy", um zu studieren. Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank! Dies ist der dritte Beitrag für tiefes Lernen und Bilderkennung. Freut mich, dich kennenzulernen.
Was diesmal zu lernen ・ Bequeme Funktionen von Keras ・ Informationen zur Methode zur Verbesserung der Genauigkeit des Modells
-Auch im vorherigen Kapitel wurde die Berechnung der Generalisierungsgenauigkeit mit __ "model.evaluate (X_test, y_test)" __ durchgeführt, jedoch im Argument von "model.fit ()" __ "validation_data = (X_test)". , y_test) ”__ berechnet die Generalisierungsgenauigkeit auf die gleiche Weise __.
・ Code![Screenshot 2020-11-09 16.39.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/6865a878-5afe-94ef- 79b2-be27e002b530.png)
・ Ergebnis![Screenshot 2020-11-09 16.39.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/e1669f65-d751-4b17- 4a83-d54edadfa214.png)
Early Stopping ・ Selbst wenn die Anzahl der Lernvorgänge zu groß ist, sinkt die Genauigkeit, wenn sie ein bestimmtes Niveau überschreitet. In solchen Fällen ist es wichtig, das Lernen frühzeitig zu beenden. __ "Early Stop" __ kann in solchen Fällen verwendet werden. ・ Frühes Stoppen enthält neben Trainings- und Testdaten auch Verifizierungsdaten, nimmt einen Fehler zwischen der Auswertung dieser Daten und der Auswertung der Trainingsdaten für jedes Lernen auf und stoppt das Lernen zu dem Zeitpunkt, zu dem sich der Fehler ausbreitet. Das ist.
-Wenn Sie die Struktur des Modells überprüfen möchten, gibt es eine __- Methode, um dies als __- Bild auszugeben. Die Methode ist nur __ "plot_model (model, to_file = 'model.png')" __. -Wenn Sie für jede Ebene einen Namen festlegen möchten, fügen Sie dem Argument __ "name" __ hinzu, wenn Sie __ "model.add ()" __ verwenden, um eine darunter liegende Ebene zu erstellen.
·Code
·Ergebnis
・ In vielen Fällen ist es besser, die Lernrate im Verlauf des Lernens zu ändern. Dies wird als __ "Optimierung der Lernrate" __ bezeichnet, und Adam, RMSprop, Adagrad usw. werden verwendet.
-Feinabstimmung __ (Transferlernen) __ wurde bereits gelernt, aber es ist eine Methode, um mit einem Teil von __ anderen Modellen __ zu trainieren. In Bezug auf die Bilderkennung wird nur die letzte vollständig verbundene Schicht geändert und die gewundene Schicht wird so verwendet, wie sie ist.
-Für den obigen Code geben Sie zuerst das Eingabeformular mit __ "input_tensor" __ ein. Nachdem Sie dies definiert haben, erstellen Sie tatsächlich ein VGG-Modell __. Es kann mit "VGG16 ()" __ erstellt werden. Als Argument gibt __ "include_top" __ an, ob die vollständig verbundene Ebene des Originalmodells mit True oder False verwendet werden soll, und __ "weight = 'imagenet'" __ gibt an, dass die von imagenet gelernten Gewichte verwendet werden sollen. , __ "input_tensor" __ Beschreiben Sie das zuvor definierte Eingabeformular.
・ Nachdem Sie dies getan haben, müssen Sie im nächsten Schritt ein separates Modell __ (top_model) __ in der Nähe der Ausgabeebene (vollständig verbundene Ebene) erstellen. Da die Eingabeebene von top_model die Ausgabe des VGG-Modells (Faltungsschicht) empfängt, wird sie als __ "Flatten ()" __ festgelegt. Durch Setzen von input_shape auf __ "vgg16.output_shape [1:]" __ kann die Ausgabeform (zweidimensional) des VGG-Modells erhalten werden. -Der Rest besteht nur darin, Ebenen wie bei einem normalen Modell hinzuzufügen. Nach dem Addieren zur Ausgabeebene besteht der nächste Schritt darin, ein endgültiges Modell mit __ "Eingabe ist vgg16.input, Ausgabe ist top_model mit vgg Ausgabe" __ zu erstellen.
-Dies ist das Ende der Ebenenaddition, und von nun an werden wir kompilieren und lernen, aber vorher das Gewicht des __VGG-Modellteils so einstellen, dass es nicht geändert wird __.
-Es gibt keine besonderen Änderungen beim Zusammenstellen und Lernen. Nur ein Punkt, wenn Transferlernen durchgeführt wird, sollte die Optimierungsfunktion __ "SGD" __ sein.
-Die Genauigkeit des Lernens kann durch Ändern von __ "history ['acc']" __ in __ "plt.plot ()" __ visualisiert werden.
Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.
Recommended Posts