collate_fn eripituisille syötteille
Täyttäkää ja pinotkaa vaihtelevan kokoiset näytteet
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, labelsPeitä 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. 🎉
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
- Kirjoittakaa mukautettu Dataset-luokka
- Eräajo, sekoitus ja num_workers
- collate_fn eripituisille syötteille
- Syötteiden normalisointi ja standardointi