pytorch

Tutorial Dasar PyTorch : Tensor dan Autograd

Saya mulai menggunakan PyTorch semenjak mengerjakan Tesis di tahun 2017 akhir. PyTorch merupakan pengembangan dari Torch Framework yang dikembangkan oleh Facebook dan difokuskan sebagai framework berbahasa Python untuk proses komputasi Machine Learning, sehingga bisa disandingkan dengan framework sejenis seperti Tensorflow (dikembangkan oleh Google), Keras, Theano (sudah tidak dikembangkan), Caffe2, dan lainnya.

Menurut saya salah satu keunggulan PyTorch dibanding framework lain adalah sintaks yang digunakan tidak terlalu beda dengan fungsi-fungsi pada Numpy, bahkan rasanya dia memiliki sintaks yang lebih rapi dan sederhana

Untuk memulai belajar PyTorch, menurut saya ada dua komponen utama yang perlu dipahami terlebih dahulu, yakni Tensor dan Autograd.

PyTorch Tensor

Tensor adalah sebuah tipe data atau class yang merepresentasikan sebuah array, atau tepatnya ndimensional array karena tidak terbatas pada dimensi-dimensi tertentu. Pada contoh di bawah adalah tensor dengan dimensi 1 bernilai [1,2,3]

Sebuah tensor pada PyTorch dapat dibuat dengan tiga cara:

  1. Diberi langsung nilai arraynya
  2. Generate dengan fungsi bawaan (misalnya random)
  3. Diconvert dari Numpy array

Class Tensor dapat dikenali dari tipenya. Jika digunakan fungsi bawaan Python type(x) maka akan diberitahu bahwa x adalah class tensor dari PyTorch. Namun, itu hanya sebatas menginfokan bahwa x adalah tensor, tetapi tidak menampilkan tipe dari elemen yang terkandung di dalamnya. Untuk menampilkan tipe data dari elemennya gunakan .type() bawaan dari PyTorch:

Untuk mengubah tipe, gunakan parameter dtype

Class Tensor yang merupakan bawaan PyTorch tentu masih terbatas dan tidak bisa disamakan dengan Numpy array atau Python list. Untuk itu jika terdapat fungsi yang belum ada pada PyTorch yang kita butuhkan, proses konversi bisa dilakukan (fungsi tambahan clone() diperlukan untuk menghindari pass by reference).

Tensor Operation

Operasi yang dapat dilakukan pada Numpy hampir semua sudah bisa dilakukan di Tensor, meskipun beberapa memiliki penulisan sintaks yang berbeda. Berikut beberapa operasi sederhana pada tensor

Terdapat lebih dari 100 operasi yang bisa dilakukan Tensor, untuk info lebih lengkap silakan kujungi halaman dokumentasi resmi Tensor: https://pytorch.org/docs/stable/tensors.html

Autograd

Autograd adalah sebuah package yang memudahkan dalam melakukan perhitungan turunan (diferensial). Turunan adalah bagian penting pada Machine Learning khususnya Neural Network, contohnya untuk Backpropagation (contoh perhitungan backpropagation bisa dilihat di artikel ini).

Tensor memiliki sebuah attribut .requires_grad yang secara default bernilai False. Jika .requires_grad diberi nilai True maka operasi-operasi yang terjadi pada tensor tersebut akan dicatat, sehingga memungkinkan untuk dilakukan operasi turunan yang berantai.

Berikut ini kita coba gunakan autograd untuk menghitung turunan. Misalnya kita punya persamaan berikut:

$$ z = 2x^2 + y^3 $$

Sehingga misal nilai x awalnya adalah 2 dan y adalah 3, maka dapat kita hitung turunan untuk masing-masing variabel adalah:

$$ \frac{dz}{dx} = 4x + 0 = 4(2) = 8$$

$$ \frac{dz}{dy} = 0 + 3y^2 = 3(3)^2 = 27 $$

jika proses ini dilakukan menggunakan kode:

Sekian tutorial singkat PyTorch Tensor dan Autograd, semoga bermanfaat 🙂

sumber gambar: flickr

About the author

Rian Adam

View all posts

Leave a Reply