Deep Learning Academy · Pelajaran

collate_fn untuk Input Berubah Panjang

Tambah padding dan tindankan sampel tidak sekata.

Pelajaran 3 daripada 413 langkah

collate_fn untuk Input Berubah Panjang ialah pelajaran Deep Learning Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Deep Learning Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Deep Learning Academy merangkumi sejumlah 4 pelajaran.

Apabila Sampel Tidak Sepadan

Menyusun ke dalam kelompok memerlukan semua sampel mempunyai bentuk yang sama. Namun, ayat dan klip audio mempunyai panjang yang berbeza, jadi langkah collate lalai gagal. 🧩

Fungsi collate_fn

DataLoader mengumpulkan senarai sampel dan menyerahkannya kepada collate_fn, yang menggabungkannya menjadi satu kelompok. Secara lalai, ia hanya menyusun tensor.

Input Tidak Sekata Menghalang Penyusunan

Cuba susun jujukan dengan panjang 5 dan 8, lalu PyTorch menghasilkan ralat bentuk. Panjang tidak sekata ialah keadaan yang perlu dikendalikan oleh collate tersuai.

Tulis collate_fn Anda Sendiri

Berikan satu fungsi kepada argumen collate_fn DataLoader. Fungsi itu menerima senarai sampel dan mengembalikan bentuk kelompok yang dijangka oleh model anda.

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

Langkah Satu: Pisahkan Senarai

Di dalam fungsi anda, nyahzip senarai pasangan menjadi jujukan dan label yang berasingan. Kini anda boleh mengendalikan setiap kumpulan sendiri sebelum menggabungkannya.

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

Pad Kepada Yang Terpanjang

Helah untuk panjang yang berubah-ubah ialah padding: panjangkan setiap jujukan kepada panjang yang paling besar dengan nilai pengisi supaya semuanya akhirnya mempunyai bentuk yang sama.

pad_sequence Melakukannya Untuk Anda

PyTorch menyediakan pad_sequence, yang menambah pad pada senarai tensor sehingga panjangnya sama dan kemudian menyusunnya. Tetapkan batch_first supaya dimensi kelompok berada di hadapan.

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

Ingat Panjang Sebenar

Padding menambah token palsu, jadi kembalikan juga panjang sebenar setiap jujukan. Model anda menggunakan nilai ini untuk mengabaikan kedudukan berpad semasa laluan ke hadapan.

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

Susun Label

Label biasanya bersaiz tetap, jadi stack biasa boleh digunakan. Kembalikan input berpad, panjang dan label yang disusun bersama-sama.

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

Samarkan Padding

Kemudian bina topeng daripada panjang supaya kerugian dan perhatian melangkau slot berpad. Padding melengkapkan bentuk tanpa mencemarkan kecerunan.

Satu Fungsi, Apa-apa Bentuk

Dengan collate_fn tersuai, DataLoader yang sama boleh mengendalikan teks, audio dan graf. Anda mengawal dengan tepat cara sampel yang tidak seragam menjadi satu kelompok yang kemas.

Semakan Pantas

Mengapakah jujukan yang panjangnya berbeza memerlukan collate_fn tersuai?

Ulang Kaji

collate_fn tersuai menukarkan senarai sampel yang tidak sama panjang menjadi satu kelompok, biasanya dengan menambah pad pada jujukan sehingga panjangnya sama dan menjejaki saiz sebenar. 🎉

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “collate_fn untuk Input Berubah Panjang” percuma?

Ya — teks penuh “collate_fn untuk Input Berubah Panjang” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Deep Learning Academy, tingkat taraf kepada CoddyKit PRO. Kursus Deep Learning Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “collate_fn untuk Input Berubah Panjang”?

Tambah padding dan tindankan sampel tidak sekata. Anda berlatih Deep Learning Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Deep Learning Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Deep Learning Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “collate_fn untuk Input Berubah Panjang” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Deep Learning Academy ini?

Ya. Setiap pelajaran Deep Learning Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Tulis Class Set Data Tersuai
  2. Pengumpulan Kelompok, Pengocokan dan num_workers
  3. collate_fn untuk Input Berubah Panjang
  4. Normalkan dan Seragamkan Input
← Kembali ke Deep Learning Academy