‫OK, toll, jetzt haben wir eine kleine Hilfsfunktion, die uns nicht nur unsere Bilder in Form von Zeitformen zurückgibt, damit
‫sie die Bilder für uns verarbeitet, sondern auch das Label zurückgibt, damit wir es in
‫Tupelform zurückbekommen.
‫Lassen Sie uns das also nutzen, um eine weitere Funktion zu schreiben, die unsere Daten umwandelt, alle unsere Daten,
‫da dies nur ein Sample macht.
‫Wir brauchen eine Möglichkeit, alle unsere Daten, also unser X und Y, unsere Daten und Etiketten, in Stapel der Größe 32 umzuwandeln.
‫Gut.
‫Jetzt müssen wir das aufschreiben.
‫Wir versuchen, uns in unseren Notizbüchern eine Möglichkeit zu vermitteln, unsere Daten in Tupel von Zeitformen umzuwandeln.
‫Und wir gehen hier in das Formular.
‫Bildetikett.
‫Lassen Sie uns eine Funktion erstellen, um alle unsere Daten umzuwandeln.
‫X und Y in Chargen.
‫Alles klar, wunderbar.
‫Wenn Sie sich jetzt noch einmal fragen, woher das alles kommt, sollten Sie
‫die Dokumentation durchlesen.
‫Ich weiß, es kann manchmal etwas langweilig sein, aber vertrau mir, durchlesen, auch wenn du es beim ersten Mal nicht verstehst Ich
‫habe es beim ersten Mal nicht verstanden.
‫Lesen Sie es durch, probieren Sie es aus, probieren Sie es erneut aus und sehen Sie, wie es wird.
‫Ein großer Hund mit einer Funktion.
‫Oh, das passt, weil wir an der Hundesicht arbeiten, aber es wird uns später
‫verdammt viel Zeit sparen.
‫Also machen wir's.
‫Also müssen wir die Bash-Größe definieren.
‫32 ist also ein guter Anfang.
‫Denken Sie daran, tendenziell fließen Standardeinstellungen von 30 zu viel.
‫Wenn Sie es also nicht irgendwo einstellen, wird es wahrscheinlich standardmäßig auf 32 gesetzt, aber wir werden es trotzdem definieren.
‫Lassen Sie uns also eine Funktion erstellen, um Daten in Batches umzuwandeln.
‫Und jetzt werden wir diese Funktion gemeinsam durchschreiben.
‫Und es wird ein paar kleine Dinge anders machen, je nachdem, ob wir
‫einen Trainingsdaten-Batch, einen Validierungsdaten-Batch oder einen Testdaten-Batch wünschen.
‫Denn denken Sie daran, das sind unsere drei Sets, das sind also unsere drei Sets, also haben wir ein Trainingsset.
‫Wir werden zu einem Trainingsbatch, einem Validierungsbatch und einem Testbatch.
‫Richtig.
‫Also wollen wir den Tod, erstellen Datenübereinstimmungen, wir wollen, dass er ein X und ein Y aufnimmt.
‫Und eigentlich, warum kann keiner sein.
‫Jetzt möchte ich, dass Sie darüber nachdenken, warum warum vielleicht keiner ist?
‫Denn warum sind unsere Labels das wird wohl auch ein bisschen Sinn machen.
‫Aber denken Sie nur darüber nach, warum wir möglicherweise einen Datenstapel mit No Labels erstellen möchten.
‫Gültige Daten sind gleich falsch und Testdaten sind gleich falsch.
‫Und hier lassen wir uns ein wenig ärgern.
‫Früher hatte ich einen Kollegen namens Ron, der mir eine Technik namens Rubber Ducky erzählte.
‫Er war ein viel besserer Programmierer als ich, und er sagte, wenn Sie Schwierigkeiten haben.
‫Finden Sie heraus, wie Sie etwas im Code tun, schreiben Sie es zuerst in Sprache oder sagen Sie es sich selbst in einer
‫Sprache, als ob Sie mit einer Gummiente sprechen würden.
‫Und Gummienten verstehen nicht sehr gut Englisch, also muss man es als großartigen Tipp von Ron sehr deutlich
‫machen.
‫Danke, Ron.
‫Diese Funktion erstellt also Stapel von Daten aus Bild-X- und Label-Y-Paaren.
‫Es mischt die Daten, wenn es sich um Trainingsdaten handelt, also mischt es die Daten herum, denn wenn die Trainingsdatei, die
‫wir heruntergeladen haben, eine gewisse Ordnung hatte, wahrscheinlich nicht, weil diese ziemlich durcheinander aussehen.
‫Wir möchten nicht, dass sich unser Modell daran erinnert, obwohl wir möchten, dass es so anpassungsfähig wie möglich ist, egal
‫in welcher Reihenfolge ein Bild kommt.
‫Aber wenn es sich um Trainingsdaten handelt, werden die Daten gemischt, aber nicht gemischt, wenn es sich um Validierungsdaten handelt.
‫Jetzt möchten Sie, dass Sie sich überlegen, warum es möglicherweise nicht gemischt wird, wenn es sich um Validierungsdaten handelt.
‫Keine Sorge, wir kümmern uns darum.
‫Aber denk doch erst einmal darüber nach.
‫Akzeptiert auch Testdaten als Eingabe.
‫Hier ist nun, warum wir keine sein könnten.
‫Weil Testdaten natürlich keine Labels haben.
‫Jetzt.
‫Was wir tun wollen, ist eine Funktion zu bauen, die das Gleiche tut, aber einige hat, wenn Claus oder Iliffe Ursachen hat, wenn
‫es sich um gültige Daten oder Testdaten handelt.
‫Wir wissen also, was wir wollen.
‫Und wir haben hier einige Bedingungen, ob es sich um gültige oder Testdaten handelt.
‫Beginnen wir also mit Testdaten, denn ich denke, das ist das Geringste.
‫Wenn die Daten also ein Testdatensatz sind.
‫Wir wahrscheinlich nicht.
‫Ich hatte definitiv Labels oder wir wissen, dass wir keine Labels haben, wenn es sich um einen Testdatensatz handelt, also
‫werden wir Testdaten verwenden.
‫Brent, lassen Sie uns ein bisschen aufhorchen, ich werde mich ein bisschen von dem
‫ablenken, was vor sich geht, Testdaten-Batches benoten, nur um später sicher zu gehen, hey, vielleicht machen wir
‫ein paar Daten-Batches und wir Ich habe versehentlich einen falschen Parameter an die Testdaten übergeben und es endet bei den
‫Testdaten anders.
‫Das wollen wir nicht.
‫Wir wollen wissen, dass es Testchargen herstellt.
‫Daten sind also gleich Daten.
‫Der Datensatz.
‫Dies sind also die modulintensiven, niedrigen Daten, die wir im Wesentlichen als Batch-Datensatz erstellen, und wir werden zu
‫diesem ein wenig interessanten Datensatz von Tenzer Slices gehen.
‫Erzeugt also einen Datensatz, nur einen Tensor-Flow-Datensatz, dessen Elemente Teile des Gebens und der Zeiten sind.
‫Im Grunde bedeutet dies also, dass Sie mir einige Zeitformen weitergeben und ich daraus einen Datensatz erstellen werde.
‫Ein wenig verwirrend, ich weiß, aber so wird es gemacht, intensiv, wie Tefft, konstantes X.
‫Im Grunde bedeutet dies, dass ich einen angespannten Offload-Datensatz erstellen werde.
‫Von den Tensas Slicern.
‫X und weil wir X an die TFW-Konstante übergeben, wird X zu einem Tenzer.
‫Dies sind also nur Dateiteile, keine Etiketten.
‫OK, und jetzt die Daten zurück, hier wenden wir den Datensatz an, denn im Moment würde dies
‫ganz X in einen Datensatz verwandeln.
‫Wir müssen es in eine Losgröße von 32 umwandeln.
‫Entspricht also der Datenpunktkarte.
‫Wir müssen das Bild verarbeiten.
‫Und wir müssen es in eine Losgröße umwandeln.
‫Whoa, hier ist viel los.
‫Daniel, was ist los?
‫Nun, wir haben die obige Zeile durchgesprochen, aber das ist alles, was sie sagt, im Grunde genommen nehmen Sie diese Daten,
‫die ein intensivierter Datensatz aus X sind.
‫Das sind nur Dateinamen in Form von Zeiten und bilden dann unsere Prozessabbildfunktionen ab.
‫Sehen Sie, deshalb haben wir es in unsere Funktion aufgenommen, damit wir es verarbeitetes Bild nennen können.
‫Es wird alle diese Schritte hier für unsere Dateinamen durchlaufen.
‫Also importiert es sie, wandelt sie in normalisierte Zeitformen um und wandelt sie dann in einen Stapel von Batch-Größe
‫um.
‫Lass uns hierher gehen.
‫So intensiver niedriger Datenstapel.
‫Dies ist der Workflow, den ich immer verwende, wenn ich sie betrachte.
‫aFunktion, also wenn wir zurückgehen.
‫Los geht's, Bache.
‫Kombiniert aufeinanderfolgende Elemente dieses Datensatzes zu Stapeln.
‫Na, bitte.
‫Wenn wir also einen Bereich von acht übergeben und wollen, dass es ein Stapel von drei ist, wird er acht
‫in drei Stapel aufteilen.
‫Genau deshalb dies in einem neuen Tab.
‫Das ist, was es hier tun wird, außer ist von Größe 30 to.
‫Wunderbar.
‫Das sind also Testdaten.
‫Wenn es sich bei den Daten nun um einen gültigen Datensatz handelt, müssen wir ihn nicht mischen.
‫Nun, ich möchte, dass Sie noch einmal darüber nachdenken, warum sollten wir es nicht mischen?
‫Es ist in Ordnung, wenn Sie sich nicht ganz sicher sind.
‫Ich wurde auch oft davon erwischt, so wenig Fortschrittserklärung hier und dann werden wir
‫dasselbe tun.
‫Wir könnten das einfach kopieren, aber wir werden üben, es auszuschreiben, um den Datensatz zu erhalten.
‫Da der Validierungssatz Labels hat, setzen wir jetzt ein paar X und
‫T. F. konstantes Y.
‫Also einfach Dateinamen und Labels in Zeiten umwandeln.
‫Und wir haben hier Dateipfade, Labels.
‫Jetzt haben wir also einen angespannten Offload-Datensatz.
‫Von Bilddatei-Pots und Labels, da es sich um einen Validierungsdatensatz handelt, hat der Validierungsdatensatz Labels
‫und wir werden ihn in eine Datenbank umwandeln, die der Datenzuordnung entspricht,
‫genau wie oben, das Bild verarbeitet und in umwandeln eine Charge von Chargengröße.
‫OK, Trigger glücklich zu bekommen.
‫Wunderbar.
‫Und dann Daten zurückgeben.
‫Und schließlich möchten wir, dass es sich offensichtlich um einen Trainingsbatch handelt, wenn keines davon gut funktioniert, wenn gültige Daten falsch sind und
‫Testdaten ebenfalls falsch sind.
‫Also werden wir Trainingsdaten-Badges erstellen.
‫Und los geht's.
‫Wenn es sich also um einen Trainingsdatensatz handelt, möchten wir ihn mischen.
‫Das ist der einzige Unterschied hier.
‫Also wollen wir Dateipfade und Labels in Zeiten umwandeln.
‫Genau wie bei der Validierung könnten wir dies jetzt einfach kopieren.
‫Es ist wahrscheinlich eine effizientere Methode, diese Funktion zu schreiben, die dieselbe Funktionalität bietet.
‫Aber ich habe versucht, es so zu schreiben, dass es einigermaßen verständlich ist, was vor sich geht.
‫Ständig und wie gesagt, ich hätte vielleicht sagen können, dass es ziemlich verständlich ist, aber wenn Sie
‫so etwas zum ersten Mal sehen, glauben Sie mir, als ich es tat, war ich verwirrt.
‫Aber wenn ich es Schritt für Schritt durchgegangen bin, erinnern Sie sich an unsere Technik zum Aufschlüsseln einer
‫Funktion, schreiben Sie sie Zeile für Zeile und prüfen Sie dann, was sie in jeder Zeile macht.
‫Daher möchten wir die Pfadnamen und Labels vor dem Mapping mischen.
‫Wir gehen darauf in einer Sekunde vor dem Mapping ein.
‫Die Bildprozessorfunktion ist schneller als das Mischen von Bildern.
‫Ich schreibe nur den Code, damit wir darüber reden können, aber das Datum wird neu gemischt.
‫Forsys, Unterbüro Stancil, wie viele Variablen wollen wir mischen, damit wir die ganze Menge mischen wollen?
‫Nun, hier ist viel los.
‫Nun, das heißt alles, hey, nehmen Sie diese Daten, die ein Datensatz der Daten sind, also die Dateinamen und die Labels,
‫und mischen Sie sie dann durch, und wir möchten die Anzahl der Beispiele mischen.
‫Wenn wir nur hundert mischen, würden wir die ersten hundert Beispiele von X und Y nehmen und sie mischen.
‫Aber nein, wir wollen sie alle mischen.
‫Und man könnte sagen, der Grund dafür ist, dass die Leitartikel später nach dem
‫Ausführen der Kartenfunktion gemischt werden, es geht um Datenkartenprozessbild.
‫Wenn Sie also eine Zufallswiedergabe durchgeführt haben, nachdem Sie das Bild bereits verarbeitet haben, dauert es viel länger, ein vollständiges Bild
‫zu mischen als nur einen Dateinamen.
‫Also, wie gesagt, denken Sie daran, wir versuchen, die Zeit zwischen den Experimenten zu minimieren, also möchten wir versuchen, so
‫viel wie möglich zu beschleunigen.
‫Mir ist gerade aufgefallen, dass wir hier oben einen kleinen Fehler gemacht haben.
‫In unserem Validierungsdatensatz, weil wir haben.
‫Bilder und Labels müssen wir die Funktion abbilden, erhalten ein Bildlabel, das auch unser Bild
‫verarbeitet, während wir für unseren Testdatensatz, da wir keine Labels haben, direkt die verarbeitete Bildfunktion ausführen
‫können.
‫Lassen Sie uns also dieses Bildlabel ersetzen, und es wird dasselbe sein.
‫Für unseren Trainingsdatensatz erhalten Sie also das Bildlabel wunderbar und wir schreiben vielleicht einfach mit einem kleinen Kommentar auf,
‫was dies bewirkt.
‫Erstellen Sie also das Bildlabel Tuttle's.
‫Dadurch wird auch der Bildpfad zu einem vorverarbeiteten Bild.
‫Also wenn du kannst.
‫Mischen Sie Ihre Daten im kleinsten Format, a. k. A. in unserem Fall
‫eher Dateinamen als vollständige Bilder, und jetzt wollen wir endlich die Trainingsdaten in Batches umwandeln.
‫Der Datenstapel ist also gleich dem Datenstapel.
‫Diese Größe, und dann gehen wir hier raus, kehren zurück.
‫Dana Bash.
‫Wolf, das ist ein bisschen eine Riesenfunktion, aber wie gesagt, das wird uns später viel Zeit sparen
‫und das werden Sie sehen.
‫Denken Sie daran, dass dies die Art von Entwicklungsarbeit ist, über die Sie nachdenken sollten.
‫Wie kann ich später einige Funktionen wiederverwenden?
‫Nun, wenn ja, werde ich es in eine Funktion reiten.
‫Und das wissen Sie wahrscheinlich bereits, denn Sie sind viel schlauer als ich.
‫Früher habe ich nur herumgeplaudert und die Dinge Zeile für Zeile geschrieben.
‫Lassen Sie uns nun unsere Funktion testen, indem wir Trainings- und Validierungsdatenbatches erstellen.
‫Also gehen wir Zugdaten.
‫Wir werden unsere Big Dog-Funktion oben verwenden.
‫Wir werden bei X trainieren für die Trainingsdaten und wir trainieren für die Validierungsdaten und das ist alles, was wir
‫brauchen.
‫Und dann können wir für die gültigen Daten Datenstapel erstellen, X-Wert, Y-Wert.
‫Sind es gültige Daten?
‫Entspricht wahr.
‫Und jetzt, Daumen drücken, sollten wir sehen.
‫Unsere Druckfortschrittsmeldungen.
‫Oh ja, das ist erstaunlich.
‫OK, jetzt schauen wir uns die verschiedenen Attribute unserer Datenübereinstimmungen an.
‫Wenn wir also Daten trainieren, liegen sie jetzt im Format eines Datenstapels vor, was Flo's bevorzugte Art der Verarbeitung von
‫Dingen entspricht.
‫Na, bitte.
‫Das sind unsere Trainingsdaten, die ersten hier.
‫Was sagt es?
‫Sie haben also die Form keine, zwei, zwei, vier, zwei, zwei, vier, drei.
‫Das ist unser Bild.
‫Keine ist für die Chargengröße.
‫Ich weiß, wir haben es zu zweiunddreißig gesagt, aber es wird so bleiben, weil die Chargengröße flexibel
‫ist.
‫Dies ist also nur unsere Bilder sind jetzt in Stapeln von zweiunddreißig und sie haben eine Form von zwei bis vier,
‫zwei, zwei für drei Farbkanäle mit Höhengewicht vom Typ, um zweiunddreißig zu schweben.
‫Und wir haben hier ein paar von unserem Label.
‫Dies sind also Bildetikettenpaare in Form von Zeitformen und unsere Etiketten haben auch eine Chargenform von keiner, da
‫die Chargengröße flexibel ist.
‫Und sie haben eine Dimension von einhundertzwanzig, denn wenn wir gehen, warum null?
‫Es gibt 120 verschiedene Dog Raids, und dann ist es wieder dasselbe für die Validierungsdaten.
‫Wunderschönen.
‫Das war also ziemlich ausführlich.
‫Sobald dieses Video zu Ende ist, was in ein paar Sekunden sein wird, würde ich es noch einmal durchgehen und einfach durchlesen,
‫was in dieser Funktion hier vor sich geht.
‫Wenn Sie sich nicht ganz sicher sind, würde ich das Laden und Vorverarbeiten von Daten, das
‫Tutorial von Bildern nachschlagen, das durchlesen und dann am besten lernen, es einfach aufzuschreiben, die Funktion aufzuschlüsseln
‫und zu versuchen eine Zeile für Zeile ausführen.
‫So breche ich die Dinge für mich auf.
‫Aber so wie unsere Daten im Moment sind, sind sie immer noch schwer zu verstehen, wenn Sie noch nicht mit dem Konzept von Batches
‫vertraut sind.
‫Es ist wahrscheinlich ein sehr schwer zu verstehendes Konzept.
‫Es ist völlig in Ordnung, nicht zu wissen, was gerade los ist.
‫Um uns zu helfen, zu verstehen, anstatt nur dieses Kauderwelsch ausdrucken zu lassen, wenn wir
‫versuchen, zu überprüfen, was in unseren Datenstapeln ist, schreiben wir eine Funktion, die uns hilft,
‫zu visualisieren, was vor sich geht.
‫Das machen wir im nächsten Video.