Friday, March 11, 2016

Java : Pemrograman Neuron dengan Banyak input.

Skenario :
  1. Saya akan menampilkan sebuah program yang diemulasikan memiliki banyak input, dan selanjutnya setiap pengolahan input akan diberi bias 1.
  2. Input dan weight digambarkan dalam bentuk array. Sedangkan bias digambarkan dalam bentuk skalar.
  3. Perhitungan yang dilakukan "sampai dengan - tidak lebih" dari persamaan  n = WP+b. Perhitungan lebih lanjut dengan fungsi aktifasi atau fungsi transfer akan dibahas kemudian.

Untuk membuat program berdasarkan skenario diatas, Saya menggunakn bahasa Java. Untuk program ini kita tidak menggunakan konsep-konsep lanjutan didalam pemrograman berorientasi object. Berikut ini adalah kerangka dasar pemrograman dari skenario diatas :
  1. Membuat method untuk melakukan perkalian matriks
  2. Membuat method untuk melakukan penjumlahan hasil perkalian matriks Input dan Weight dengan bias.
  3. Matriks input berdimensi 1 x 2
  4. Matrik weight berdimensi 2 x 1
  5. Jika  matriks input dikalikan dengan matriks weight maka hasilnya adalah skalar.
  6. Masukan yang diberikan dalam bentuk matriks. 
  7. KITA MENGGUNAKAN SATU BUAH NEURON
Kerangka program diatas menggunakan perkalian matriks Berikut ini adalah potongan program dari kerangka program diatas :

/*
<ANNInputWeightBias.java. The program performs summation for 
Input, Weight, and Bias .>
    Copyright (C) <2016>  <Joko Adianto>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

public class ANNInputWeightBias {
/**
     * @param p
     * @param w
     * @param o
     * @return double
     */
    public static double getSum( double[] p, double[][]w, double b ){
        double o =0; //o adalah akumulator
        int k = p.length; //panjang array p
        int j = 0; //pencacah
        for (j=0;j<k;j++){
                    o=o+p[j]*w[j][0];                   
                }
        o=o+b;
        return o;
    }
   
   
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
       
        double o=0;
        double b=1; //b adalah bias
        double[] p = {1,2,3}; //p adalah input
        double[][] w = {{2}, {4}, {6}}; //w adalah weight
       
        o=getSum(p,w,b);
        System.out.println(o);
       
    }
   
}

keluaran dari program diatas adalah 29. Kita dapat melihat program diatas sebagai sebuah persamaan linear n = WP + b dimana :
  • W adalah kostanta
  • P adalah variable dan merupakan sumbu horizontal
  • b adalah pergeseran pada sumbu P
  • dan n adalah sumbu tegak lurus.
Yang patut diperhatikan adalah nantinya nilai W dan b akan berubah-ubah.perubahan ini terjadi karena adanya proses pembelajaran dari neuron. Penyesuaian ini dilakukan selama pembelajaran sampai mendapatkan Weight dan b yang paling cocok.








No comments:

Post a Comment