‫Wie aufregend das Ganze ist, wir haben noch einen langen Weg zurückgelegt, um unsere Bilder und Haltungen, unsere Labels in
‫Zeiten zu bringen, unseren Tag bei der Auswahl eines Modells auf dem Tensor-Flow-Hub vorzubereiten und Modellrückrufe zu erstellen.
‫Wir sind endlich in der Phase, in der wir unser erstes Deep-Learning-Modell trainieren können, also erstellen
‫wir ein Heading-Training, ein Modell.
‫Jetzt werden wir eine Teilmenge der Daten anlegen, denn wenn Sie sich erinnern, als wir
‫unsere Daten aufgeteilt haben, werden wir nur mit dem Training mit 1000 Bildern beginnen, denn warum wollen wir das tun?
‫Also lasst uns gleich hier sein, unser erstes Modell wird nur mit tausend Bildern trainieren, um sicherzustellen, dass alles
‫funktioniert.
‫Das ist es, was wir versuchen.
‫Wir versuchen, die Zeit zwischen den Experimenten zu minimieren.
‫Wir beginnen also damit, mit einer Teilmenge der Daten zu beginnen, um sicherzustellen, dass der gesamte Code, ich meine, er könnte kaputt gehen.
‫Richtig.
‫Wir wollen also sicherstellen, dass es funktioniert, bevor wir lange Zeit mit 10000 Bildern trainieren, denn das
‫Training mit tausend Bildern geht viel schneller als mit 10000 Bildern.
‫Und Sie können sich vorstellen, dass das gleiche geht, wenn Sie es auf 100000 Bilder oder im Fall von Bildern netto
‫vierzehn Komma zwei Millionen erhöhen.
‫Es gibt also eine weitere Variable, die wir definieren müssen, bevor wir ein Modell trainieren können, und das ist die
‫Anzahl der Epochen.
‫Die Anzahl der Epochen ist also die Anzahl der Datendurchgänge, die unser Modell ausführen soll.
‫Und Sie können sich vorstellen, dass ein Pass unserem Modell entspricht und versucht, Muster in jedem Hundebild zu finden und
‫zu sehen, welche Muster sich auf jedes Etikett beziehen.
‫Gehen wir nun zu den Epochen hier über.
‫Entspricht hundert und wir werden hier etwas Cooles machen, wir werden einen kleinen
‫Schieberegler erstellen, wie wir es vor Harran getan haben.
‫Und dann erstellen wir einen Typ-Schieberegler und dann werden die Männer 10 sein, die Macs können 100 sein und dann kann der Schritt
‫10 sein.
‫Sieh dir das an.
‫Wie cool ist das?
‫Wenn wir also 10 Epochen machen wollten, könnten wir 10 machen.
‫Aber wir werden es bei 100 belassen, weil wir unseren vorzeitigen Rückruf haben und das alles in einer
‫Sekunde in Aktion sehen werden.
‫Aber im Wesentlichen, was ein Trainingspass tun wird, wenn wir zu unserem Keano zurückkehren, würde
‫eine Epoche unserem Modell eine einzige Chance geben, sich alle Trainingsdaten anzusehen und sie dann anhand ihrer zu validieren.
‫100 Epochen, also geben wir unserem Modell bis zu 100 Chancen, den Trainingsdatensatz durchzugehen und die
‫Muster herauszufinden.
‫Es geht also zu dem, was passiert, es wird durch diese Schichten gehen.
‫Wir werden unsere Trainingsbilder an unser Modell weitergeben.
‫Es wird durch diese Schichten gehen.
‫Und dann wird unser Modell, während es Muster lernt, Vermutungen anstellen, welches Etikett zu welchem Bild
‫gehört.
‫Und je schlechter die Vermutung ist, desto höher wird der Verlust sein.
‫Hier kommt Adam ins Spiel.
‫Denken Sie daran, dass der Typ unten am Hügel bei den International Hill Dissent Championships
‫unserem Modell sagt, wie es seine Schätzungen mit jeder Epoche verbessern kann.
‫Und dann werden wir sehen, wie unser Modell auf Genauigkeitsebene abschneidet, denn wir haben diesen Zuschauerrichter
‫am Fuße des Hügels, der beobachtet, wie gut unser Modell abschneidet.
‫Also noch einmal, wenn all dies keinen Sinn ergibt, wird es mehr Sinn machen, wenn wir tatsächlich anfangen, ein Modell
‫zu betreiben.
‫Lassen Sie uns also eine letzte Überprüfung durchführen.
‫Die letzte Überprüfung ist ein letztes Mal, um sicherzustellen, dass wir eine GPU verwenden, denn wenn wir keine GPU verwenden, wird
‫dieses Training unseres Modells auf Bildern sehr, sehr lange dauern.
‫Sie haben gleich zu Beginn gesehen, dass eine GPU unseren Code um das bis zu 30-fache und manchmal mehr beschleunigen kann.
‫Schreiben wir diesen Code.
‫Überprüfen Sie, ob wir immer noch auf einer GPU laufen, die so dringend ist.
‫GPU.
‫Verfügbar, und dann geht es los.
‫Ja.
‫Wenn T. F. config, nicht zuletzt physische Geräte.
‫Und dann wollen wir G überprüfen. P. A. Sonst nicht verfügbar, also ist dies genau derselbe Code, den wir oben geschrieben haben.
‫Aber wir brauchen eine GPU, um dies in einer beträchtlichen Zeit ausführen zu können.
‫Ja, wir hätten auch hier nachsehen können.
‫Denken Sie daran, das ist ein kleiner Shortcut-Trick, aber ich liebe es, diesen Ausdruck jetzt hier auszudrucken.
‫Boom, wir haben ein G. P. A. läuft, wir haben eine Reihe von Epochen eingerichtet,
‫lassen Sie uns eine einfache Funktion erstellen, die ein Modell trainiert.
‫Also lass uns das hier richtig machen.
‫Lassen Sie uns eine Funktion erstellen, die ein Modell trainiert, und die Funktion wird ein Modell mithilfe von create model erstellen.
‫Und dann wollen wir einen zehnten Board-Callback einrichten.
‫Verwenden Sie unsere fortan-Funktion, also create.
‫Sehen Sie, hier kommt das Erstellen von Funktionen für uns wirklich ins Spiel.
‫Andernfalls müssten wir Code ad hoc schreiben.
‫Das Schreiben von Funktionen dauert zwar anfangs etwas länger, spart uns aber auf Dauer Zeit.
‫Rufen Sie also die Funktion in unserem Modell auf, analysieren Sie die Trainingsdaten und die Validierungsdaten.
‫Mehrere Epochen zum Trainieren.
‫Was jetzt eine Kiste ist.
‫Wir rechtfertigen das mit unserem kranken kleinen Slider und den kovács, das sind unsere Hilfsfunktionen, die wir gerne
‫verwenden würden, und schließlich wollen wir, dass es das Modell zurückgibt, wir werden dies in Markdown ändern.
‫Das sieht phänomenal aus.
‫Okay, lass uns hierher gehen.
‫Es gab eine Funktion zum Trainieren und Zurückgeben eines trainierten Modells.
‫Hier sind wir also gut ausgebildet.
‫Ich kann nicht glauben, dass wir das endlich geschafft haben.
‫Das ist großartig.
‫Wir trainieren unser erstes Deep Learning und Know-how-Netzwerk.
‫So erhalten Züge ein Modell und geben die trainierte Version zurück.
‫Schön und einfach.
‫Denken Sie daran, auch wenn wir aufgeregt sind, bedeutet das nicht, dass wir unsere kommunikativen Gewohnheiten verlieren, also
‫erstellen wir ein Modell.
‫Wir gehen also Modell gleich, sagen wir, hier kommt unsere Modellerstellungsfunktion ins Spiel.
‫Oh ja.
‫Das zu schreiben ist so befriedigend.
‫Und dann erstellen wir jedes Mal, wenn wir ein Modell trainieren, eine neue Board-Sitzung.
‫Denn denken Sie daran, mit unserem Tensas-Board, mit unserem Tensas-Board-Callback, wir sind eigentlich nur Estancia
‫Board.
‫Wir brauchen diesen Rückruf nicht, mit dem wir unsere Funktion einrichten.
‫Wenn wir also bei jedem Aufruf hierher zurückkehren, wird ein neuer Ordner in den Protokollen mit dem aktuellen Datum und
‫der Uhrzeit erstellt.
‫Dies ist also wichtig, denn jedes Mal, wenn wir unsere Modellfunktionen ausführen, also jedes Mal, wenn
‫wir versuchen, ein neues Modell, ein neues Experiment zu trainieren, erstellen wir einen Protokollordner, in dem wir dann die Leistung unseres Modells
‫verfolgen können.
‫Das ist später sehr hilfreich, wenn wir versuchen zu bewerten, welches Experiment besser abschneidet als ein
‫anderes.
‫Und dann passen wir das Modell an die Daten an, die bei den von uns erstellten Callbacks übergeben werden.
‫Nun, es gibt wahrscheinlich eine bessere Möglichkeit, diese Funktion zu verwenden, aber wir versuchen nur, sie so zu gestalten,
‫dass sie funktioniert.
‫Und dann können wir, wenn wir sozusagen die Phase der Erstanpassung eines Modells hinter uns haben, zurückgehen
‫und es verfeinern.
‫Lassen Sie uns das Modell anpassen, und wir werden es bestehen.
‫X entspricht den Zugdaten, die, wenn Sie sich erinnern, ein Datenstapel sind, der die Bilder und Beschriftungen enthält.
‫Epochen werden also Naameh-Epochen sein, a. k. A. Wie oft darf unser Modell die Trainingsdaten
‫ansehen, bevor es stoppt?
‫Oder wie viele Chancen hatte unser Modell, den gesamten Trainingsdatensatz zu durchlaufen, um Muster und dann die
‫Validierungsdaten zu finden?
‫Es werden gültige Daten sein, die ebenfalls ein Datenbündel sind, oder Datenstapel, Entschuldigung, und die Validierungshäufigkeit gibt an,
‫wie oft wir die Muster testen möchten, die unser Modell in unserem Validierungssatz gefunden hat.
‫Und wir setzen es auf eins, weil wir möchten, dass es seine Muster, die es im Trainingssatz auf den
‫Validierungsdaten zu jeder Epoche findet, testet.
‫Also einmal eine Epoche und dann sind unsere Rückrufe Bordewich, die wir oben gerade mit unserer Funktion
‫und dem frühen Stoppen von Whoof erstellt haben.
‫Und dann wollen wir ein wenig zurück Modell setzen.
‫Senden Sie das angepasste Modell zurück.
‫Wie cool ist das und jetzt können wir unser Modell an die Daten anpassen.
‫Warum so einfach wie gehen.
‫Modell, ECLSS, Zugmodell.
‫Sie sehen die Vorteile beim Erstellen von Funktionen, damit wir diese Funktion ausführen können, nachdem wir später eine Reihe verschiedener
‫Experimente durchgeführt haben.
‫Und sind Sie jetzt bereit?
‫Ein kleiner Leckerbissen hier.
‫Wenn ein Modell zum ersten Mal trainiert wird, insbesondere anhand von Bilddaten oder
‫anderen großformatigen Daten, dauert die erste Epoche im Vergleich zu den anderen normalerweise am längsten.
‫Dies liegt daran, dass die Funktionen, die wir geschrieben haben, die Daten abrufen und initialisiert wurden.
‫Also ein. k. A. Laden der Daten in den Speicher unserer GPU.
‫Jetzt dauert es in der Regel länger, mehr Daten zu verwenden, weshalb wir mit tausend Bildern und damit
‫nach der ersten Epoche begonnen haben.
‫Richtig, wir haben es so eingerichtet, dass es auf 100 begrenzt ist, der erste kann nach dem ersten
‫Airpark ein paar Minuten dauern, nachfolgendes APOC sollte nur ein paar Sekunden dauern.
‫Sie sind also bereit.
‫Wir werden dies gemeinsam tun.
‫Wir drücken all unseren Funktionen die Daumen, denn das hängt hier oben tatsächlich von ein paar Zeilen Code
‫ab.
‫Sagen wir, wenn es drei zu eins funktioniert.
‫Sehen Sie sich das Gebäude an, ein Modell mit mobilem Netz V2.
‫Ich habe die Daumen gedrückt.
‫Ich hoffe, Sie auch.
‫Oh ja, es geht los.
‫Sehen Sie, los geht's, Epoche eins von 100.
‫Weil Box auf 100 gesetzt ist.
‫Es wird also für 25 Schritte trainiert, was unsere Batchgröße bedeutet. Wenn wir also gehen, haben wir 800 Bilder in unserem Trainingsset, denn denken Sie
‫daran, wir haben mit tausend angefangen.
‫Wenn wir das also durch 32 teilen, erhalten wir fünfundzwanzig.
‫Deshalb besteht das Training aus 25 Schritten, weil es die Batchgröße 32 und die Validierung gibt.
‫Wenn wir zweihundert geteilt durch zweiunddreißig gehen, wird es aufgerundet.
‫Es wird also auf sieben aufgerundet.
‫Deshalb haben wir die Validierung.
‫Also 200 Bilder über einem Bachelor sind 30 to.
‫Und sieh dir das an.
‫Na, bitte.
‫Ungefähr fünf Minuten, und hier ist, was ich mit dem Verlust rede, also all diese Dinge, die
‫wir hier oben geschaffen haben, also der Verlust.
‫Unser Ziel ist es daher, den Verlust zu minimieren.
‫Weil wir oben auf dem Hügel sind, wir haben Höhenangst, wir wollen den Fuß des
‫Hügels erreichen, Sie wollen die Verlustfunktion minimieren?
‫Der Verlust ist die Höhe des Hügels.
‫Wir kommen hier runter.
‫Hoffentlich geht diese Zahl zurück, aber wir möchten die Genauigkeit maximieren.
‫So wissen wir, ob unser Modell trainiert oder nicht, ob es Muster lernt, dieser Verlust sollte
‫nach unten gehen, diese Genauigkeit sollte steigen.
‫Dies wird also einige Minuten dauern, um die erste Epoche zu überstehen.
‫Ich werde warten, bis es die erste Epoche durchlaufen hat, und dann werde ich dieses Video beschleunigen und dann sehen
‫wir uns, wenn die erste Epoche vorbei ist, weil Sie nachfolgende Epochen sehen werden.
‫Epoche 2 von 100 wird also ziemlich schnell sein, weil wir eine GPU verwenden.
‫Der einzige Grund, warum das erste eine Weile dauert, ist, dass alle diese Bilder in den GPU-Speicher geladen werden
‫müssen.
‫Wir sehen uns ziemlich augenblicklich, aber für mich dauert es ungefähr drei Minuten.
‫Alles klar, ich bin zurück.
‫Wir haben hier also eine ETA, die für geschätzte Ankunftszeit steht, in dieser ersten Epoche bleiben noch
‫etwa 12 Sekunden, solange alles nach Plan verläuft.
‫Und so können Sie sehen, dass sich der Verlust leicht verringert und die Genauigkeit erhöht hat.
‫Das ist also gut so.
‫Was wir nun am Ende dieser ersten Epoche sehen sollten, wenn wir uns richtig einstellen, sollten wir sagen, dass dies
‫auf dem Trainingssatz und der Genauigkeit auf dem Trainingssatz verloren geht.
‫Der Verlust der Validierungsdaten und die Genauigkeit des Validierungssets sollten jetzt jede Sekunde auftauchen.
‫Also warten wir nur.
‫Was es jetzt wahrscheinlich tut, ist, dass es etwas länger als 12 Sekunden her ist,
‫aber es lädt die Validierungsdaten in den Speicher, damit es berechnen und bewerten kann, wie es mit diesem Datensatz funktioniert.
‫Ich kann nicht glauben, dass wir das machen, wir glänzen wie ein Model in Echtzeit zusammen.
‫Das ist phänomenal.
‫Ich habe das noch nie gemacht.
‫Das ist solange Ihr Code funktioniert.
‫Auf geht's.
‫Sieh dir das an.
‫Jetzt haben wir also das, worüber wir nicht sprechen, wir haben diese Metrik in den Trainingsdaten und diese Metrik
‫in der Validierung.
‫Sehen Sie also, wie schnell sich unsere Genauigkeit verbessert.
‫Nun, ich habe euch gesagt, dass sich die Epochen beschleunigen werden.
‫Sieh dir das an.
‫Der erste dauerte ungefähr fünf Minuten, aber diese dauern fünf Sekunden.
‫Wir sind bereits bei einer Genauigkeit von einem Punkt Null.
‫Das ist eine 100-prozentige Genauigkeit der Trainingsdaten.
‫Das ist verrückt.
‫Das sagt uns also eigentlich, dass unser Modell überangepasst ist, weil es bei
‫den Trainingsdaten viel besser abschneidet als bei den Validierungsdaten.
‫Aber das ist großartig, unser Modell funktioniert, es findet Muster, es verwendet das, was mobile net V2
‫gelernt hat, und Image net und wendet es auf unsere Hunde an.
‫Datensatz Dog Vision erwacht zum Leben von so stoate.
‫Nun hoffe ich, dass deins auch so läuft, denn wir trainieren gemeinsam ein Modell in Echtzeit.
‫Dies ist schön.
‫Was wir also sehen sollten, ist, dass, sobald die Validierungsgenauigkeit für
‫eine Reihe von Epochen aufhört, sich zu verbessern.
‫Ich glaube also nicht, dass wir die 100 Epochen erreichen werden, vielleicht nicht einmal annähernd, weil
‫wir hier eine Genauigkeit von einem Punkt Null mit einem winzigen Verlust unserer Trainingsdaten erreichen.
‫Auf geht's.
‫Es hielt an.
‫Mein Herz rast.
‫Das war phänomenal, also sage ich, was ich meinte, die erste Epoche dauert eine Weile, weil sie Daten
‫in den Speicher lädt, sobald sie geladen sind, diese ersten Daten im Speicher, die GPU wird einfach gehen,
‫in Ordnung, Zeit, auf die zu treten Gas und schaltet die Nachbrenner oder das Gas ein.
‫Keine Bremsen, Baby.
‫Damit haben wir 18 von 100 Epochen erreicht.
‫Und wir können sehen, dass unser Modell auf unserem Trainingsdatensatz mit 100-prozentiger Genauigkeit arbeitet.
‫Das ist ziemlich verrückt.
‫1. 0.
‫Sie müssen diese Zahl mit 100 multiplizieren.
‫Der Verlust ist relativ gering.
‫Ich meine, ein Verlust von Null ist perfekt.
‫Wir können jedoch feststellen, dass unser Modell überangepasst ist, da es bei den Trainingsdaten viel besser
‫abschneidet als bei den Validierungsdaten.
‫Wenn wir also zurückkommen, ist es so, als ob unser Modell die Kursmaterialien auswendig gelernt hätte und nicht
‫die Problemlösungsprinzipien dieser Kursmaterialien.
‫Und es fällt ihm schwer, sich an einen Datensatz anzupassen, den es noch nie zuvor gesehen hat, auch bekannt als eine Übungsprüfung oder unser
‫Validierungsset.
‫Im Moment hat unser Modell also eine geringe Verallgemeinerungsfähigkeit.
‫Das wars also denke ich das reicht für ein Video.
‫Das ist viel Aufregung.
‫Ich möchte, dass Sie ein wenig Hausaufgaben machen, bevor wir im nächsten Video die Board-Logs
‫überprüfen, da wir unseren Tenzer-Board-Callback bereits verwendet haben.
‫Ich möchte, dass Sie sich ansehen, dass dies eine wirklich wichtige Frage ist, nachdem wir versucht haben, zu modellieren.
‫Ich möchte, dass Sie Fragen stellen.
‫Es sieht so aus, als ob unser Modell überfüttert, weil es Leistung bringt.
‫Im Trainingsdatensatz weitaus besser als im Validierungsdatensatz.
‫Welche Möglichkeiten gibt es, eine Modellüberanpassung beim Deep Learning, den neuronalen Netzen, zu verhindern?
‫Also machen wir daraus einen Knockdown.
‫Diese Frage sollten Sie nachschlagen, bevor wir zum nächsten Video kommen. Welche Möglichkeiten gibt es, um eine Überanpassung eines Modells
‫und tief bekannte Netzwerke zu verhindern?
‫Überprüfen Sie das also, auch wenn Sie sich nicht sicher sind.
‫Ich möchte nur, dass Sie anfangen, neugierig zu werden, was vor
‫sich geht, und ich möchte, dass Sie aufhören, die Hinweise darauf aufzugreifen, wann Ihr
‫Modell überangepasst ist, z.
‫Und eine kleine Anmerkung hier, beachten Sie, dass die Überanpassung von Anfang an eine gute Sache ist.
‫Es bedeutet, dass unser Modell lernt.
‫Daher bin ich phänomenal aufgeregt, dass wir gerade unser erstes
‫neuronales Deep-Learning-Netzwerk zusammen mit Transfer-Learning trainiert haben.
‫Damit haben wir das Training eines Modells abgeschlossen, zumindest eine erste Teilmenge eines Modells.
‫Dies sind nicht die vollständigen Daten.
‫Dies ist nur auf tausend Bildern.
‫Unser nächster Schritt ist also, wenn wir zu unserer Keynote kommen, was haben wir vor?
‫Also passen wir das Modell an die Daten an.
‫Wir haben noch keine Vorhersage gemacht.
‫Was wir also tun könnten, ist das Modell mit unseren Tensorboard-Callbacks auszuwerten, damit Sie das sehen können.
‫Und dann werden wir herausfinden, wie wir mit unserem trainierten Modell eine Vorhersage treffen können.
‫Klingt nach einem Plan.
‫Also schau dir diese Frage an und wir sehen uns im nächsten Video.