Deep Learning Academy · Oppitunti

collate_fn eripituisille syötteille

Täyttäkää ja pinotkaa vaihtelevan kokoiset näytteet

Oppitunti 3/413 vaihetta

collate_fn eripituisille syötteille on ilmainen Deep Learning Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Deep Learning Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Deep Learning Academy-kurssilla on yhteensä 4 oppituntia.

Kun näytteet eivät täsmää

Eräksi kokoaminen edellyttää, että kaikilla näytteillä on sama muoto. Lauseilla ja äänileikkeillä on kuitenkin eri pituudet, joten oletusarvoinen collate-vaihe epäonnistuu. 🧩

Mitä collate_fn tekee

DataLoader kerää näytteet listaksi ja välittää ne funktiolle collate_fn, joka yhdistää ne yhdeksi eräksi. Oletuksena se yksinkertaisesti pinoaa tensorit.

Eri pituiset syötteet estävät pinoamisen

Kun yrität pinota pituudeltaan 5 ja 8 olevan sekvenssin, PyTorch ilmoittaa muotovirheestä. Ragged-pituudet ovat juuri se tapaus, joka mukautetun collate-funktion on käsiteltävä.

Kirjoita oma collate_fn

Välität funktion DataLoaderin collate_fn-argumentille. Se vastaanottaa listan näytteitä ja palauttaa minkä tahansa erän muodon, jota mallisi odottaa.

loader = DataLoader(ds, batch_size=4, collate_fn=my_collate)

Vaihe yksi: jaa lista

Pura funktion sisällä parien lista erillisiksi sekvensseiksi ja luokiksi. Nyt voit käsitellä kumpaakin ryhmää erikseen ennen yhdistämistä.

def my_collate(batch):
    seqs, labels = zip(*batch)

Täydennä pisimpään

Eripituisten syötteiden ratkaisu on padding: pidennä jokainen sekvenssi pisimmän pituiseksi täytearvolla, jotta niillä on lopulta sama muoto.

pad_sequence tekee sen puolestasi

PyTorch sisältää funktion pad_sequence, joka täydentää tensorilistan samanpituiseksi ja pinoaa tensorit. Aseta batch_first, jotta eräulottuvuus tulee ensimmäiseksi.

from torch.nn.utils.rnn import pad_sequence
padded = pad_sequence(seqs, batch_first=True)

Muista todelliset pituudet

Täytearvot lisäävät keinotekoisia tokeneita, joten palauta myös jokaisen sekvenssin todellinen length. Mallisi käyttää näitä ohittaakseen täytearvot forward-vaiheen aikana.

lengths = torch.tensor([len(s) for s in seqs])

Pinoa luokat

Luokat ovat yleensä kiinteän kokoisia, joten tavallinen stack toimii niille. Palauta täydennetyt syötteet, pituudet ja pinotut luokat yhdessä.

labels = torch.stack(labels)
return padded, lengths, labels

Peitä täytearvot maskilla

Muodostat myöhemmin pituuksista mask-maskin, jotta häviö ja attention ohittavat täytetyt kohdat. Täytearvot yhdenmukaistavat muodon vääristämättä gradientteja.

Yksi funktio, mikä tahansa muoto

Mukautetun collate_fn-funktion ansiosta sama DataLoader käsittelee tekstiä, ääntä ja graafeja. Hallitset tarkasti, miten erimuotoisista näytteistä muodostetaan yhtenäinen erä.

Pikatarkistus

Miksi eripituiset sekvenssit tarvitsevat mukautetun collate_fn-funktion?

Kertaus

Mukautettu collate_fn muuttaa eripituisten näytteiden listan yhdeksi eräksi yleensä täydentämällä sekvenssit samanpituisiksi ja seuraamalla niiden todellisia kokoja. 🎉

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”collate_fn eripituisille syötteille” ilmainen?

Kyllä – oppitunnin ”collate_fn eripituisille syötteille” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Deep Learning Academy-kurssin, päivitä CoddyKit PROhon. Deep Learning Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”collate_fn eripituisille syötteille”?

Täyttäkää ja pinotkaa vaihtelevan kokoiset näytteet Harjoittelet Deep Learning Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Deep Learning Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Deep Learning Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”collate_fn eripituisille syötteille”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Deep Learning Academy-oppitunnilla?

Kyllä. Jokainen Deep Learning Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Kirjoittakaa mukautettu Dataset-luokka
  2. Eräajo, sekoitus ja num_workers
  3. collate_fn eripituisille syötteille
  4. Syötteiden normalisointi ja standardointi
← Takaisin: Deep Learning Academy