Apa itu tensor di deep learning?
Di deep learning, tensor adalah array angka multidimensi dengan shape yang tetap. Scalar tidak punya sumbu, vector punya satu, matriks punya dua, dan tensor ber-rank lebih tinggi punya tiga sumbu atau lebih. Operasi tensor mencakup reshape, aritmetika element-wise, broadcast, dan perkalian matriks yang mengubah array ini.
Semua input, weight, aktivasi, dan gradient di PyTorch, TensorFlow, atau JAX adalah tensor. Batch gambar adalah tensor 4D, batch token embedding adalah tensor 3D, dan attention weight juga tensor 4D. Sebagian besar bug di kode model adalah bug shape, jadi kemampuan membaca dan menebak shape tensor termasuk keterampilan paling praktis di deep learning.
Ide utama
- Tensor adalah array n-dimensi, dan shape-nya mencatat ukuran tiap sumbu.
- Jumlah elemen adalah hasil kali ukuran-ukuran di shape.
- Reshaping mengubah shape tanpa mengubah elemen maupun urutannya.
- Broadcasting merentangkan sumbu berukuran 1 agar tensor dengan shape berbeda bisa digabung secara element-wise.
- Operasi element-wise butuh shape yang sama atau bisa di-broadcast, sedangkan perkalian matriks butuh ukuran bagian dalam yang cocok.
- Batch gambar adalah tensor 4D, dan urutan sumbunya berbeda antar-framework.
Pertanyaan umum
Apa bedanya array NumPy dan tensor PyTorch?
Keduanya array n-dimensi dengan aturan pengindeksan dan broadcasting yang hampir sama. Tensor PyTorch juga bisa berada di GPU dan bisa merekam operasi untuk automatic differentiation. torch.from_numpy dan tensor.numpy() mengonversi di antara keduanya, dan memorinya dipakai bersama ketika tensor berada di CPU.
Apa fungsi squeeze dan unsqueeze?
squeeze menghapus sumbu berukuran 1, jadi (1, 3, 1, 4) menjadi (3, 4). unsqueeze menyisipkan sumbu berukuran 1 di posisi yang dipilih, jadi tensor (3, 4) menjadi (1, 3, 4). Keduanya terutama dipakai untuk menyiapkan broadcasting atau menambahkan sumbu batch ke satu contoh.
Apa bedanya torch.mm, torch.matmul, dan operator @?
torch.mm hanya mengalikan dua matriks 2D. torch.matmul, yang dipanggil oleh @, juga menangani vector dan batch: untuk input 3D dengan shape (b, n, m) dan (b, m, p), ia menjalankan b perkalian matriks terpisah. Ia juga mem-broadcast sumbu batch, dan dengan cara itulah attention mengalikan query dan key untuk setiap head sekaligus.
Bagaimana cara men-debug error shape tensor?
Cetak .shape di setiap langkah dan bandingkan dengan shape yang kamu harapkan, sambil menulis shape yang diharapkan itu sebagai komentar. Sebagian besar error berasal dari sumbu batch yang hilang, sumbu yang tertukar setelah transpose, atau broadcasting yang tidak disengaja. Library seperti einops membuat shape terlihat jelas di kode, misalnya rearrange(x, "b c h w -> b (h w) c").
Penjelasan terkait
- Aljabar Linear · Vector, matriks, dan bahasa data
- Convolutional Neural Network · Cara CNN melihat dan memahami gambar
- Kalkulus Matriks dan Jacobian · Turunan parsial, gradient, dan Jacobian: kalkulus untuk vector
- Cara Kerja Self-Attention · Query, key, dan value, inti dari self-attention
- Epoch dan Batching · Cara data masuk ke model lewat epoch, batch, dan shuffle
Referensi
- Goodfellow, Bengio & Courville, "Deep Learning", ch. 2 Linear Algebra
- Zhang et al., "Dive into Deep Learning", section 2.1 Data Manipulation
- NumPy documentation, "Broadcasting"
Terakhir diperbarui