• Tidak ada hasil yang ditemukan

Initialisasi x, y, sum, a, b While(y < TinggiMatriks){ For x = 0 To JumlahTransisi-1{ b = y + JumlahTransisi For a = y To b-1{ sum += Matriks(x,y) } } y++ } } Function N_Up2Down(){ Initialisasi x, y, sum, a, b While(x < LebarMatriks){ For y = 0 To JumlahTransisi-1{ b = x + JumlahTransisi For a = x To b-1{ sum += Matriks(x,y) } } x++ } } Function N_Down2Up(){ Initialisasi x, y, sum, a, b While(x < LebarMatriks){ For y = 0 To JumlahTransisi-1{

b = x + JumlahTransisi For a = x To b-1{ sum += Matriks(x,y) } } x++ } }

Hasil dari normalisasi matriks dengan ukuran 4x6 ditunjukkan pada gambar 3.13 di bawah ini.

(a)Normalisasi transisi kiri ke kanan (b)Normalisasi transisi kanan ke kiri

(c)Normalisasi transisi atas ke bawah (d) Normalisasi transisi bawah ke atas Gambar 3.13 Matriks normalisasi transisi keempat sisi berukuran 4x6 Langkah 4 : Langkah terakhir yaitu menggambungkan keempat matriks normalisasi menjadi sebuah matriks berukuran empat kali dari matriks normalisasi yaitu 4x24. Berikut pseudocode pengabungan keempat matriks menjadi matriks nilai keluaran dari

Direction Feature yang selanjutnya menjadi input di dalam jaringan saraf tiruan Backpropagation.

Initialisasi x, y, z

For y = 0 To (TinggiMatriksAwal/4) – 1{ z = 0, Transisi = 4

For x = 0 To (Transisi*4) -1{

Apabila z = Transisi -1, maka z = 0

Apabila x >= 0 dan x < Transisi, maka ElemenMatriksDF = ElemenMatriksN

Apabila x >=Transisi dan x<Transisi*2, maka ElemenMatriksDF = ElemenMatriksN

Apabila x >=Transisi*2 dan x<Transisi*3, maka ElemenMatriksDF = ElemenMatriksN

Apabila x >=Transisi*3 dan x<Transisi*4, maka ElemenMatriksDF = ElemenMatriksN

} }

Hasil akhir dari proses ekstraksi fitur dapat dilihat pada gambar 3.14 di bawah ini.

Gambar 3.14 Matriks Direction Feature Extraction berdimensi 4x24 3.2.13. Backpropagation

Proses akhir dari penelitian ini adalah mengklasifikasi citra biji catur cina setelah melalui proses awal hingga proses fitur ekstraksi. Nilai input dari metode Backpropagation di dalam penelitian ini adalah nilai output dari Direction Feature Extraction yang berdimensi 4x24. Metode Backpropagation bersifat feedforward sehingga proses pelatihan mesin dapat dilakukan pada proses pengklasifikasian citra biji catur cina.

Pada penelitian ini, lapisan-lapisan dari Backpropagation yang digunakan yaitu Input, Hidden dan Output Layer. Jumlah dari Input Layer yang digunakan adalah

hasil perkalian dari dimensi output fitur ekstraksi yang digunakan, yaitu 96 nodes.

Hidden Layer memiliki jumlah nodes sebesar 70% dari jumlah Input nodes dengan Hidden nodes. Output Layer yang memiliki nodes yang berjumlah sesuai dengan Target yang akan diklasifikasi yaitu masing-masing delapan buah jenis tulisan catur

cina berdasarkan warna merah atau warna hitam dan dikalikan dengan jumlah transisi sudut.

Besar jumlah epoch atau iterasi pelatihan juga mempengaruhi hasil klasifikasi. Oleh sebab itu, penulis melakukan pelatihan sebanyak 10.000 epoch. Untuk mengubungkan antar node-node pada setiap lapisan maka digunakan

weight(bobot). Weight juga dapat ditingkatkan nilai pembelajarannya. Di dalam

penelitian ini, weight yang digunakan ada dua, yaitu, weight penghubung Input-

Hidden Layer dan Hidden-Output Layer. Adapun dimensi dari weight Input-Hidden Layer adalah jumlah node Input Layer ditambah satu node bias kemudian dikalikan

dengan jumlah node Hidden Layer. Sedangkan, dimensi dari weight penghubung

Hidden-Output Layer adalah jumlah node Hidden Layer ditambah satu node bias

kemudian dikalikan dengan jumlah node Output Layer. Semakin besar epoch yang dilakukan, semakin teliti nilai weight yang digunakan dalam mengklasifikasi. Berikut langkah-langkah penerapan Algoritma Backpropagation untuk mengklasifikasi pola karakter cina pada biji catur cina beserta pseudocode.

Langkah 1 : Melakukan initialisasi terhadap variabel-variabel yang digunakan beserta penjelasan.

Intialisasi InputNeuron, HiddenNeuron, OutputNeuron.

//Pada penelitian ini digunakan Input = 96, Hidden = 70 dan Output = 8. Initialisasi ArrayInput, ArrayHidden, ArrayOutput, ArrayAnswer

//Pada penelitian ini digunakan ukuran ArrayInput, ArrayHidden dan ArrayOutput sama seperti jumlah neuron pada Input, Hidden dan Output. ArrayAnswer adalah array yang menyimpan nilai untuk membandingkan output pada training.

Intialisasi WeightInHid, WeightHidOut

//Pada penelitian ini digunakan nilai bias = 1 dan ukuran matriks WeightInHid adalah (ukuran ArrayInput + bias)* (ukuran ArrayHidden). Sedangkan, ukuran matriks WeightHidOut adalah (ukuran ArrayHidden +bias) * (ukuran ArrayOutput).

//Pada penelitian ini digunakan ukuran dari array ErrorOutput sebesar ukuran ArrayOutput dan ukuran dari array ErrorHidden sebesar ukuran ArrayHidden.

Initialisasi JumlahSampelTraining, JumlahTargetTesting

//Pada penelitian ini digunakan 32 sampel training dan 8 buah sampel testing hanya untuk proses training saja.

Initialisasi LearningRate, EpochNumber

//Pada penelitian ini digunakan LearningRate adalah 0.2 dan EpochNumber adalah 10.000 kali.

Initialisasi OutputTarget

//Hasil dari training akan diurut sesuai dengan urutan klasifikasi masing-masing. Misal, pada pseudocode akan diurutkan Raja sebagai 0, Penasehat Raja Huruf Baru = 1, Penasehat Raja Huruf Lama = 2, Gajah = 3, Kereta Kuda = 4, Kuda = 5, Meriam = 6, Pasukan = 7.

Langkah 2 : Melakukan pendeklrasian Matriks Input Training dan Testing beserta OutputTarget yang diperlukan

Function Deklarasi(){

MatriksInputTraining = MatriksDirectionFeature(berjumlah 32 buah) MatriksInputTesting = MatriksDirectionFeature(berjumlah 8 buah) For i = 0 To (JumlahSampelTraining / JumlahTargetTesting) – 1{

k= 0 For j = (i * 8) To ((i+1)*JumlahTargetTesting) – 1{ OutputTarget(j) = k k++ } } }

Langkah 3 : Memberikan nilai awal berupa nilai acak atau random antara 0.5 atau - 0.5. Pemberian nilai acak ini ditujukan kepada weight Input-Hidden Layer dan weight

Hidden-Output Layer.

For i = 0 To InputNeuron{

For j = 0 To HiddenNeuron – 1{

WeightInHid posisi (i,j) = GetRandom 0.5 atau -0.5 }

}

For i = 0 To HiddenNeuron{

For j = 0 To OutputNeuron – 1{

WeightHidOut posisi (i,j) = GetRandom 0.5 atau -0.5 }

} }

Langkah 4 : Menjalankan fungsi utama dimana fungsi ini akan menjalankan proses pengacakan nilai weight, proses feedforward, proses backpropagate, proses training dan proses testing yang terdapat pada langkah-langkah berikutnya.

Function MainNetworkActivity(){ Lakukan Deklarasi Lakukan WeightAcak For i = 0 To EpochNumber – 1{ J = 0 J=(J==JumlahSampelTrainig? 0 : J) dan J++

For a = 0 To OutputNeuron – 1 maka ArrayTarget indeks (a) = OutputTarget posisi (J, a)

For b = 0 To InputNeuron – 1 maka ArrayInput indeks (b) = MatriksInputTraining posisi (J, b)

Lakukan FeedForward Lakukan Backpropagate

}

Lakukan Training

Lakukan CekTraining dan Lakukan CekTesting }

Langkah 5 : Melakukan proses feedforward yaitu proses yang dilakukan untuk penghitungan jaringan saraf tiruan menuju arah ke depan dari Input ke Hidden Layer dan dari Hidden ke Output Layer.

Function FeedForward{

For a = 0 To HiddenNeuron-1{

Set JumlahweightInputHidden = 0 For b = 0 To InputNeuron-1{

Sum (ArrayInput pada indeks(b) *WeightInHid pada posisi (b,a ) InTo (JumlahweightInputHidden)

}

Sum (WeightInHid pada posisi (InputNeuron ,a ) InTo (JumlahweightInputHidden)

Set ArrayHidden indeks a = 1 / 1 + Exponen(JumlahweightInputHidden* -1) }

For a = 0 To OutputNeuron-1{

Set JumlahweightHiddenOutput = 0 For b = 0 To HiddenNeuron-1{

Sum (ArrayHidden pada indeks(b) *WeightHidOut pada posisi (b,a ) InTo (JumlahweightHiddenOutput)

}

Sum (WeightHidOut pada posisi (HiddenNeuron ,a ) InTo(JumlahweightHiddenOutput)

Set ArrayAnswer indeks (a) = 1 / 1 + Exponen(JumlahweightHiddenOutput*-1) }

}

Langkah 6 : Melakukan proses backpropagate. Proses backpropagate adalah proses

Dokumen terkait