Mengenal Operasi Linear, Bobot, dan Bias pada Algoritma CNN

By | February 24, 2022
Print Friendly, PDF & Email
218 Views

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 y = x*W^T+b mengikuti aturan perkalian matrix maka ukuran y dihasilkan dari perkalian antar x*W^T. 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 y = x*W^T+b , 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?

 

 

See also  Apa itu Gradient Descent-Machine Learning?

Leave a Reply

Your email address will not be published.




Enter Captcha Here :