Mengenal Operasi Linear pada Algoritma CNN – Operasi Linear sesuai judulnya yaitu operasi tersebut bersifat multiplikasi untuk mengurangi ukuran matrix pada hasil convolution di algoritma CNN. Operasi Linear berkaitan dengan perkalian antara bobot dan bias. Bila kalian pernah mempelajari Algoritma Perceptron maka cara kerjanya adalah sama saja. Hal utama yang membedakan adalah adanya operasi Transpose pada bobotnya.
Langkah-langkah algoritma CNN yang sudah kita bahas seperti Mengenal Conv2d pada algoritma CNN dan Mengenal MaxPool2d untuk mengurangi /reduksi ukuran matrix sehingga didapatkan ciri fitur tersebut, maka langkah selanjutnya yang penting yaitu membuat output target, misalkan saja ada 10 kelas maka nanti ouput harus sedikit-demi sedikit dikurangi menjadi 1 baris x 10 kolom. Bila outputnya adalah 3 kelas maka output yang dihasilkan juga harus 1 baris x 3 kolom. Untuk itu dibutuhkan operasi Linear https://pytorch.org/docs/stable/generated/torch.nn.Linear.html
Operasi Linear
Operasi linear sesuai penjelasan dari pytorch mengikuti persamaan mengikuti aturan perkalian matrix maka ukuran dihasilkan dari perkalian antar . Kita ambil contoh sebagai berikut untuk memanggil function Linear.
import torch.nn as nn m = nn.Linear(5,2) W = m.weight b = m.bias
perhatikan perintah nn.Linear(5,2)
artinya input 5 fitur input akan dihasilkan 2 fitur output sesuai penjelasan pytorch
torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None)
Kita juga bisa melihat isi dan ukuran W dan bias sebagai berikut
W Out[94]: Parameter containing: tensor([[-0.1716, 0.1969, -0.1038, 0.3469, 0.4343], [-0.1486, 0.4183, -0.2701, -0.4171, 0.0405]], requires_grad=True) b Out[95]: Parameter containing: tensor([-0.2581, -0.3871], requires_grad=True) W.shape Out[96]: torch.Size([2, 5]) b.shape Out[97]: torch.Size([2])
Jangan sampai bingung ya, kolom selalui menunjukan feature. Pada kode m = nn.Linear(5,2)
berarti nanti input harus mempunyai ukuran kolom sebanyak 5. Kita coba saja dengan kode berikut
import numpy as np import torch import torch.nn as nn x=torch.tensor([ [3,3,2,1,0], [0,0,1,3,1], [3,1,2,2,3], [2,0,0,2,2], [2,0,0,0,1], [2,0,0,0,1] ],dtype=torch.float) print(x.shape)
mempunyai ukuran tensor 6×5 akan di linear kan menjadi ukuran 6 x 2
m = nn.Linear(5,2) c = m(x) print(c.shape)
maka output c akan berukurann 6×2. Hal ini berarti ada 6 record yang tadinya mempunyai 5 feature akan dikurangi hanya menjadi 2 feature saja. Sesuai rumus dari , maka operasi manual nya sebenarnya sebagai berikut
y = x.matmul(m.weight.t()) + m.bias
Singkatan Matmul itu adalah matrix multiply alias perkalian antar sesama matrix dengan ukuran Baris X kolom harus sama. Kalian bisa coba hasil c dan y adalah sama!
c Out[106]: tensor([[ 0.9702, -1.1816], [-0.1210, -0.5461], [ 0.9212, -2.2458], [ 0.0297, -1.4728], [ 0.4780, -1.1924], [ 0.4780, -1.1924]], grad_fn=<AddmmBackward>) y Out[107]: tensor([[ 0.9702, -1.1816], [-0.1210, -0.5461], [ 0.9212, -2.2458], [ 0.0297, -1.4728], [ 0.4780, -1.1924], [ 0.4780, -1.1924]], grad_fn=<AddBackward0>)
Bobot dan Bias
Bobot dan bias diatas di generate secara random dengan rentang -1 sampai +1. Bobot dan Bias inilah yang sebenarnya menyimpan memory pelatihan dan digunakan kembali pada saat nanti digunakan untuk melakukan prediksi. Bobot dan Bias ini akan disimpan dalam bentuk binary seperti format Aplikasi View Format Penyimpanan HDF5. Bobot dan bias akan selalu di update terus menerus mengikuti pola antara input dan target. Demikianlah pembahasan mengenai Mengenal Operasi Linear pada Algoritma CNN. Semoga sobat softscients memahami cara kerja algoritma CNN
Gradient Descent
Untuk kalian yang masih awam dalam deep machine learning, jangan bingung istilah dari
b Out[95]: Parameter containing: tensor([-0.2581, -0.3871], requires_grad=True)
disitu tertulis required_grad yang artinya tensor tersebut bisa dilakukan operasi derivatif Apa itu Gradient Descent-Machine Learning?