‫OK, geweldig, nu hebben we een kleine helperfunctie die ons niet alleen onze afbeeldingen teruggeeft in de vorm van tijden, waardoor het
‫de afbeeldingen voor ons verwerkt, maar het retourneert ook het label zodat we het terug kunnen krijgen in
‫een tupelvorm.
‫Dus laten we dat gebruiken om een andere functie te schrijven die onze data gaat veranderen, al onze data,
‫want dit doet maar één sample.
‫We hebben een manier nodig om al onze gegevens om te zetten, zodat onze X en Y, onze gegevens en labels worden omgezet in batches van maat 32.
‫Oke.
‫Laten we dat nu opschrijven.
‫We proberen in onze notitieboekjes met onszelf te communiceren over een manier om onze gegevens om te zetten in tupels van tijden.
‫En we gaan hier in de vorm.
‫Afbeeldingslabel.
‫Laten we een functie maken om al onze gegevens om te zetten.
‫X en Y in batches.
‫Oké, geweldig.
‫Nogmaals, als je je afvraagt waar dit allemaal vandaan komt, een geweldige plek voor het laden van gegevens is
‫door de documentatie te lezen.
‫Ik weet dat het soms een beetje saai kan zijn, maar geloof me, als je doorleest, zelfs als je het de eerste keer niet
‫begreep, begreep ik het de eerste keer niet.
‫Lees het door, probeer het uit, probeer het opnieuw en kijk hoe dit gaat.
‫Een grote hond van een functie.
‫Oh, dat is passend, want we werken aan hondenvisie, maar het zal ons later
‫een hoop tijd besparen.
‫Dus laten we het doen.
‫Dus we moeten de bash-grootte definiëren.
‫Dus 32 is een goed begin.
‫Onthoud dat de neiging om standaardwaarden naar 30 naar veel te vloeien.
‫Dus als je het niet ergens instelt, zal het waarschijnlijk standaard 32 zijn, maar we gaan het toch definiëren.
‫Laten we dus een functie maken om gegevens in batches om te zetten.
‫En nu gaan we deze functie samen doornemen.
‫En het gaat een paar kleine dingen anders doen, afhankelijk van of we een batch met
‫trainingsgegevens, een batch met validatiegegevens of een batch met testgegevens willen.
‫Want onthoud, dit zijn onze drie sets daar, dus dit zijn onze drie sets, dus we hebben een trainingsset.
‫We gaan veranderen in een trainingsbatch, een validatiebatch en een testbatch.
‫Rechts.
‫Dus we willen de dood, maken gegevensovereenkomsten, we willen dat het een X en Y inneemt.
‫En eigenlijk, waarom kan er geen zijn.
‫Nu wil ik dat je nadenkt over waarom zou er geen zijn?
‫Want waarom zijn onze labels, dit zal waarschijnlijk logisch zijn en een beetje.
‫Maar denk er eens over na waarom we een databatch willen maken zonder labels?
‫Geldige gegevens zijn gelijk aan onwaar en testgegevens zijn gelijk aan onwaar.
‫En we laten ons hier een beetje aan het prutsen.
‫Ik had vroeger een collega die Ron heette en hij vertelde me een techniek die rubber ducky heet.
‫Hij was een veel betere programmeur dan ik, en hij zei, als je problemen hebt.
‫Als je uitzoekt hoe je iets in code moet doen, schrijf het dan eerst in taal op, of zeg het tegen
‫jezelf in taal alsof je tegen een badeend praat.
‫En badeendjes verstaan het Engels niet zo goed, dus je moet het heel duidelijk maken als een goede tip van
‫Ron.
‫Dank je, Ron.
‫Dus deze functie maakt batches met gegevens uit afbeelding X en label Y-paren.
‫Het schudt de gegevens door elkaar als het trainingsgegevens zijn, dus mengt de gegevens door elkaar, want als er een inherente volgorde
‫was in het trainingsbestand dat we hebben gedownload, waarschijnlijk niet omdat deze er nogal verward uitzien.
‫We willen niet dat ons model dat onthoudt, hoewel we willen dat het zo aanpasbaar mogelijk is, in welke
‫volgorde een afbeelding ook binnenkomt.
‫Maar dus als het de shuffle van trainingsgegevens is, maar niet shuffle, als het validatiegegevens zijn.
‫Nu wil ik dat je bedenkt waarom het misschien niet in willekeurige volgorde wordt weergegeven als het validatiegegevens zijn.
‫Maak je geen zorgen, we zullen dat dekken.
‫Maar denk er maar even over na.
‫Accepteert ook testgegevens als invoer.
‫Dit is waarom we er misschien geen zijn.
‫Omdat testgegevens natuurlijk geen labels hebben.
‫Nutsvoorzieningen.
‫Wat we willen doen is een functie bouwen die min of meer hetzelfde doet, maar sommige heeft als de oorzaak van Claus of Iliffe
‫is, of het geldige gegevens of testgegevens zijn.
‫Dus we weten wat we willen doen.
‫En we hebben hier enkele voorwaarden, of het geldig is of testgegevens.
‫Dus laten we beginnen met een testgegevens, want dat is denk ik het minste.
‫Dus als de data een testdataset is.
‫Wij waarschijnlijk niet.
‫Ik had zeker labels of we weten dat we geen labels hebben als het een testdataset is, dus we gaan
‫het doen als testgegevens.
‫Brent, laten we onszelf een beetje op de hoogte houden, ik zal mezelf een beetje afleiden
‫van wat er aan de hand is, testgegevensbatches beoordelen, om er zeker van te zijn dat we later, hé, misschien
‫wat gegevensbatches maken en we heb per ongeluk een valse parameter doorgegeven om gegevens te testen en het doet het uiteindelijk anders voor
‫de testgegevens.
‫Wij willen dat niet.
‫We willen weten of het testbatches maakt.
‫Dus data is gelijk aan data.
‫De dataset.
‫Dus dit zijn de module-intensieve, lage gegevens die we in wezen een batch-gegevensset maken en we gaan naar
‫dit is een beetje interessant hier van Tenzer Slices.
‫Creëert dus een dataset, alleen een tensorstroomdataset waarvan de elementen segmenten zijn van het geven en de tijden.
‫Dus wat dit in feite zegt, is geef me wat tijden door en ik zal daar een dataset van maken.
‫Een beetje verwarrend, ik weet het, maar dit is gewoon hoe het moet, intensief, zoals Tefft, constante X.
‫Dus wat dit eigenlijk zegt, is dat ik een gespannen offload-dataset ga maken.
‫Van de Tensas Slicers.
‫X en omdat we X doorgeven aan TFW constant, verandert X in een Tenzer.
‫Dit zijn dus alleen bestandsdelen Geen Labels.
‫OK, en nu gegevens terug, hier zetten we onze beurt van dataset om, want op dit moment zou dit
‫alles van X in een dataset veranderen.
‫We moeten er een batchgrootte van 32 van maken.
‫Dus gelijk aan data dot map.
‫We moeten de afbeelding verwerken.
‫En we moeten er een batch-batchgrootte van maken.
‫Wauw, er gebeuren hier veel dingen.
‫Daniël, wat gebeurt er?
‫Welnu, we hebben de bovenstaande regel doorgenomen, maar deze zegt alleen maar deze gegevens te nemen, een
‫geïntensiveerde dataset gemaakt van X.
‫Dat zijn gewoon bestandsnamen in de vorm van tijden en vervolgens onze procesbeeldfuncties in kaart brengen.
‫Kijk, dit is waarom we het in onze functie hebben gemaakt, zodat we het verwerkte afbeelding kunnen noemen.
‫Het gaat al deze stappen hier op onze bestandsnamen doorlopen.
‫Dus het gaat ze importeren, ze in genormaliseerde tijden veranderen en er dan een batch van batchgrootte van
‫maken.
‫Laten we hierheen gaan.
‫Dus intensieve lage databatch.
‫Dit is de workflow die ik gebruik wanneer ik ernaar kijk.
‫aFunctie, dus als we teruggaan.
‫Daar gaan we, Bache.
‫Combineert opeenvolgende elementen van deze dataset in batches.
‫Daar gaan we.
‫Dus als we een reeks van acht doorgeven en we willen dat het een batch van drie is, dan splitst het
‫acht in drie batches.
‫Dus dat is precies waarom dit in een nieuw tabblad.
‫Dat is wat het hier gaat doen, behalve dat het maat 30 heeft.
‫Prachtig.
‫Dus dat zijn testgegevens.
‫Nu willen we doen of de gegevens een geldige gegevensset zijn, we hoeven deze niet te shufflen.
‫Nu wil ik dat je er nog eens over nadenkt, waarom zouden we het niet moeten schudden?
‫Het is oké als je het niet helemaal zeker weet.
‫Ik ben hier ook vaak op betrapt, dus weinig voortgangsverklaring hier en dan zullen we ongeveer hetzelfde
‫doen als dit.
‫We kunnen dat gewoon kopiëren, maar we gaan oefenen om het uit te schrijven om data uit te zetten.
‫Tientallen segmenten nu, dit is waar, omdat de validatieset labels heeft, we een paar X en T
‫gaan plaatsen. F. constante Y.
‫Dus gewoon bestandsnamen en labels omzetten in tijden.
‫En we hebben hier bestandspaden, labels.
‫Dus nu hebben we een gespannen offload, dataset.
‫Van afbeeldingsbestandspotten en labels, omdat het een validatiegegevensset is, heeft de validatiegegevensset labels en we
‫gaan er een database van maken die gelijk is aan een gegevenskaart,
‫precies hetzelfde als hierboven, de afbeelding verwerken en veranderen in een partij van partijgrootte.
‫Oké, ik word blij van de trigger.
‫Prachtig.
‫En dan gegevens terugsturen.
‫En tot slot willen we dat als geen van deze goed werkt, als geldige gegevens onwaar zijn en testgegevens ook onwaar, het duidelijk
‫een trainingsbatch zal zijn.
‫Dus we gaan badges voor trainingsgegevens maken.
‫En laten we gaan.
‫Dus als het een trainingsdataset is, willen we deze in willekeurige volgorde afspelen.
‫Dat is het enige verschil hier.
‫Dus we willen bestandspaden en labels in tijden gaan veranderen.
‫Dus net zoals we gedaan hebben met de validatie, kunnen we dit nu kopiëren.
‫Het is waarschijnlijk een efficiëntere manier om deze functie te schrijven die dezelfde functionaliteit heeft.
‫Maar ik heb geprobeerd het zo te schrijven dat het redelijk begrijpelijk is wat er aan de hand is.
‫Constant en terwijl ik dat zei, had ik kunnen zeggen dat het redelijk begrijpelijk is, maar als je zoiets
‫voor de eerste keer tegenkomt, geloof me, toen ik dat deed, was ik in de war.
‫Maar toen ik het stap voor stap doornam, onthoud dan onze techniek om een functie op te
‫splitsen, schrijf het regel voor regel op en kijk dan wat het op elke regel doet.
‫Dus we willen de padnamen en labels door elkaar schudden voordat we ze in kaart brengen.
‫We zullen hier zo op ingaan voordat we in kaart brengen.
‫De beeldverwerkingsfunctie is sneller dan het in willekeurige volgorde afspelen van afbeeldingen.
‫Ik zal gewoon de code schrijven zodat we erover kunnen praten, maar date up shuffle.
‫Forsys, subkantoren Stancil, hoeveel variabelen willen we shuffle die we de hele boel willen shufflen?
‫Nou, er gebeurt hier veel.
‫Nou, dit wil alleen maar zeggen, hey, neem deze data, wat een dataset is van de data, dus de bestandsnamen en de labels
‫en schud het dan door elkaar en we willen het aantal voorbeelden door elkaar halen.
‫Als we er maar honderd zouden schudden, zouden de eerste honderd voorbeelden van X en Y worden geschud.
‫Maar nee, we willen ze allemaal door elkaar schudden.
‫En de reden is, zou je kunnen zeggen, omdat de hoofdartikelen later worden geschuifeld nadat we de
‫kaartfunctie hebben uitgevoerd, het gaat om het procesbeeld van de gegevenskaart.
‫Dus als je shuffle hebt gedaan nadat je de afbeelding al hebt verwerkt, duurt het veel langer om een volledige afbeelding
‫te shufflen dan alleen een bestandsnaam.
‫Dus, zoals ik al zei, onthoud, we proberen de tijd tussen experimenten te minimaliseren, dus we willen proberen de snelheid te
‫verhogen zodat we dat kunnen.
‫Ik realiseer me net dat we hier een kleine fout hebben gemaakt.
‫In onze validatiedataset, want die hebben we.
‫Afbeeldingen en labels, we moeten de functie in kaart brengen, een afbeeldingslabel krijgen, dat ook onze
‫afbeelding verwerkt, terwijl we voor onze testgegevensset, omdat we geen labels hebben, de verwerkte afbeeldingsfunctie direct kunnen
‫uitvoeren.
‫Dus laten we dit afbeeldingslabel vervangen, en het zal hetzelfde zijn.
‫Voor onze trainingsdataset, dus zorg voor een prachtig afbeeldingslabel en we kunnen misschien gewoon opschrijven wat dit doet met
‫een kleine opmerking.
‫Dus maak beeldlabel Tuttle's.
‫Dit verandert ook het beeldpad in een voorbewerkt beeld.
‫Dus als je kunt.
‫Schud uw gegevens in het kleinste formaat, a. k. A. in ons geval
‫bestandsnamen in plaats van volledige afbeeldingen, en nu willen we eindelijk de trainingsgegevens omzetten in batches.
‫Dus databatch is gelijk aan databatch.
‫Die maat, en dan gaan we hierheen en keren terug.
‫Dana Bas.
‫Wolf, dat is een beetje een kolossale functie, maar zoals ik al zei, dit gaat ons later veel tijd
‫besparen en dat zul je zien.
‫Onthoud, dit is het soort ontwikkelingswerkstijl waarover ik wil dat je begint na te denken,
‫hoe ga ik bepaalde functionaliteit later hergebruiken?
‫Nou, als ik dat ben, ga ik het naar een functie brengen.
‫En dat weet je waarschijnlijk al omdat je een veel slimmere ontwikkelaar bent dan ik.
‫Ik rommelde gewoon rond en schreef dingen regel voor regel op.
‫Laten we nu onze functie testen door training en de validatiegegevensbatches te maken.
‫Dus we gaan data trainen.
‫We gaan onze grote hond-functie net hierboven gebruiken.
‫We gaan bij X train langs voor de trainingsgegevens en we trainen voor de validatiegegevens en dat is alles wat we nodig
‫hebben.
‫En dan kunnen we voor de geldige gegevens gegevensbatches maken, X-waarde, Y-waarde.
‫Zijn het geldige gegevens?
‫Is gelijk aan waar.
‫En nu, vingers gekruist, moeten we zien.
‫Onze afdrukvoortgangsberichten.
‫O ja, dat is wonderbaarlijk.
‫Oké, laten we nu eens kijken naar de verschillende kenmerken van onze gegevensovereenkomsten.
‫Dus als we data gaan trainen, is het nu in het formaat van een databatch, wat de tientallen is naar Flo's favoriete manier om
‫dingen te verwerken.
‫Daar gaan we.
‫Dit zijn onze trainingsgegevens, de eerste hier.
‫Wat zegt het?
‫Dus je hebt vorm geen, twee, twee, vier, twee, twee, vier, drie.
‫Dit is ons beeld.
‫Geen is voor batchgrootte.
‫Ik weet dat we het tegen tweeëndertig hebben gezegd, maar het blijft als geen ander omdat de batchgrootte
‫flexibel is.
‫Dus dit is alleen onze afbeeldingen zijn nu in batches van tweeëndertig en ze hebben een vorm van twee tot vier,
‫twee, twee voor drie hoogte-gewicht kleurkanalen van het type om tweeëndertig te zweven.
‫En we hebben er hier een paar van ons label.
‫Dit zijn dus afbeeldingslabelparen in de vorm van tijden en onze labels hebben ook een batchvorm van geen omdat
‫de batchgrootte flexibel is.
‫En ze hebben een dimensie van honderdtwintig, want als we gaan, waarom nul?
‫Er zijn 120 verschillende hondenaanvallen, en dan is het weer hetzelfde voor de validatiegegevens.
‫Mooi.
‫Dus dat was een behoorlijk diepgaande.
‫Zodra deze video voorbij is, wat over een paar seconden zal zijn, zou ik teruggaan en gewoon doorlezen wat er in
‫deze functie hier aan de hand is.
‫Als je niet helemaal zeker bent, zou ik het laden en voorbewerken van gegevens opzoeken, een tutorial van afbeeldingen,
‫dat doorlezen, en dan is de beste manier om te leren dit gewoon op te schrijven, de functie af
‫te breken en te proberen regel voor regel lopen.
‫Zo maak ik dingen voor mezelf kapot.
‫Maar zoals onze gegevens er op dit moment uitzien, is het nog steeds moeilijk te begrijpen als het concept van batches nieuw voor
‫u is.
‫Het is waarschijnlijk een heel moeilijk concept om te vatten.
‫Het is prima om niet te weten wat er op dit moment aan de hand is.
‫Dus om onszelf te helpen begrijpen, in plaats van dat deze gobbledygook wordt afgedrukt, wanneer we proberen
‫te controleren wat er in onze databatches zit, laten we een functie schrijven die ons zal helpen
‫visualiseren wat er aan de hand is.
‫Dat gaan we dus doen in de volgende video.