5/31/13

Backpropagation Dengan 2 Hidden Layer Menggunakan Matlab

     Untuk kasus klasifikasi, tersedia banyak metode, salah satunya Metode Backpropagation. Kali ini, aku akan memberikan source code Backpropagation menggunakan MATLAB. Dengan kasus XOR, inputan berupa Bipolar, Target berupa Bipolar, menggunakan fungsi aktivasi Sigmoid Bipolar, terdapat 2 neuron pada unit input, terdapat 2 hidden layer masing-masing pada 1 hidden layer terdapat 2 neuron, dan 1 neuron pada unit output. Tabel input dan bias dapat dilihat seperti dibawah ini :

     Untuk arsitektur Backpropagationnya, dapat dilihat seperti dibawah ini :

     Penjelasan untuk gambar diatas adalah sebagai berikut :
  • X   = merupakan unit inputan. 1 unit inputan terdiri dari 3 neuron, yaitu X1, X2, dan bias (1).
  • Z   = merupakan unit hidden layer pertama. 11 unit hidden layer pertama terdiri dari 3 neuron yaitu, Z1, Z2, dan bias (1).
  • ZZ  = merupakan unit hidden layer kedua. 1 unit hidden layer kedua terdiri dari 3 neuron yaitu, ZZ1, ZZ2, dan bias (1).
  • Y   = merupakan input keluaran
  • Antara X dan Z terdapat bobot dengan simbol u.
  • Antara Z dan ZZ terdapat bobot dengan simbol v.
  • Antara ZZ dan Y terdapat bobot dengan simbol w.
  • Bobot pertama dirandom.
  • Kelas 1 merupakan kelas dengan target -1.
  • Kelas 2 merupakan kelas dengan target 1.
     Lalu source code nya dapat dilihat dibawah ini :
%created by Soniya Gunawan, Agus Wirayasa, Ananta Wijaya
clc
input = [-1 -1 ; -1 1 ; 1 -1 ; 1 1 ]; %2 input dalam 1 pola
target = [-1 ; 1 ; 1 ; -1]; %target setiap input
u = zeros(2,2); %matriks kosong untuk nilai bobot dari input ke hidden layer pertama
v = zeros(2,2); %matriks kosong untuk nilai bobot dari hidden layer pertama ke hidden layer kedua
w = zeros(2,1); %matriks kosong untuk nilai bobot dari hidden layer kedua ke output
u0 = zeros(1,2); %matriks kosong untuk nilai bobot bias dari input ke hidden layer pertama
w0 = zeros(1,1); %matriks kosong untuk nilai bobot bias dari hidden layer kedua ke output
v0 = zeros(1,2); %matriks kosong untuk nilai bobot bias dari hidden layer pertama ke hidden layer kedua
for i=1:1 %random nilai bobot bias dari hidden layer kedua ke output
    w0(i,1)=rand();
end
for i=1:2 %random nilai bobot bias dari hidden layer pertama ke hidden layer kedua
    v0(1,i)=rand();
end
for i=1:2 %random nilai bobot bias dari input ke hidden layer pertama
   u0(1,i)=rand();
end
for i=1:2 %random nilai bobot dari input ke hidden layer pertama
    for j=1:2
        u(i,j)=rand();
    end
end
for i=1:2 %random nilai bobot dari hidden layer pertama ke hidden layer kedua
    for j=1:2
        v(i,j)=rand();
    end
end
for i=1:2 %random nilai bobot dari hidden layer kedua ke output
    for j=1:1
        w(i,j)=rand();
    end
end
rate = 0.02; %nilai learning rate
a=1;
for a=1:1000 %batas iterasi yang dilakukan
    %menghitung nilai MSE
    z_in = zeros(2,4); %matriks kosong untuk nilai Z_in (hidden layer pertama)
    z = zeros(2,4); %matriks kosong untuk nilai Z_in yang sudah di aktivasi
    zz_in = zeros(2,4); %matriks kosong untuk nilai ZZ_in (hidden layer kedua)
    zz = zeros(2,4); %matriks kosong untuk nilai ZZ_in yang sudah di aktivasi
    y_in = zeros(2,4); %matriks kosong untuk nilai Y_in (output)
    y = zeros(2,4); %matriks kosong untuk nilai Y_in (output) yang sudah di aktivasi
   
        %perhitungan pada hidden layer pertama
        for k=1:4 %perulangan sebanyak data training
            for i=1:2 %perulangan sebanyak jumlah neuron hidden layer
                for j=1:2 %perulangan sebanyak neuron input
                    z_in(i,k) = z_in(i,k)+u(j,i)*input(k,j);
                end
                z_in(i,k) = z_in(i,k)+ u0(1,i);
                z(i,k) = (2/(1 + exp(-z_in(i,k))))-1;
                %z(i,k) = (1-(exp(-z_in(i,k))))/(1+(exp(-z_in(i,k))));
            end
        end
        %perhitungan pada hidden layer kedua
        for k=1:4 %perulangan sebanyak data training
            for i=1:2 %perulangan sebanyak jumlah neuron hidden layer
                for j=1:2 %perulangan sebanyak neuron input
                    zz_in(i,k) = zz_in(i,k) + v(j,i) * z(i,j);
                end
                zz_in(i,k) = zz_in(i,k)+v0(1,i);
                zz(i,k) = (2/(1 + exp(-zz_in(i,k))))-1;
                %zz(i,k) = (1-(exp(-zz_in(i,k))))/(1+(exp(-zz_in(i,k))));
            end
        end
   
        %perhitungan pada layer output
       
       
       
        for k=1:4 %perulangan sebanyak data training
            for i=1:1 %perulangan sebanyak neuron output
                for j=1:2 %perulangan sebanyak neuron hidden
                    y_in(i,k) = y_in(i,k)+w(j,i)*zz(j,k);
                end
                y_in(i,k) = y_in(i,k)+w0(1,i); %nilai y_in dijumlahkan dengan nilai bobot bias
                y(k,i) = (2/(1 + exp(-y_in(i,k))))-1;
                %y(k,i)=(1-(exp(-y_in(i,k))))/(1+(exp(-y_in(i,k)))); %perhitungan aktivasi untuk nilai y (output)
            end
        end
   
        %menghitung nilai (tk-yk)kuadrat
        temp = zeros(1,1); %matriks kosong untuk menyimpan hasil (tk-yk) kuadrat
        for i=1:4 %perulangan sebanyak data training
            for j=1:1 %perulangan sebanyak neuron output
                temp(j,1) = temp(j,1)+(target(i,j)-y(i,j))^2;
            end
        end
   
        %menghitung nilai MSE dengan mengkalikan 0.5
        error = zeros(1,1);
        for i=1:1
            error(i,1) = (error(i,1)+temp(i,1))*0.5;
        end
   
    if(error>=0.4) %jika nilai error lebih besar dari sama dengan 0.4 maka lakukan perhitungan dibawah ini ;
        for k=1:4 %perulangan sebanyak data training
            z_in = zeros(2,1); %matriks kosong untuk nilai Z_in (hidden layer pertama)
            z = zeros(2,1); %matriks kosong untuk nilai Z_in yang sudah di aktivasi
            zz_in = zeros(2,1); %matriks kosong untuk nilai ZZ_in (hidden layer kedua)
            zz = zeros(2,1); %matriks kosong untuk nilai ZZ_in yang sudah di aktivasi
           
            %perhitungan pada hidden layer pertama
            for i=1:2 %perulangan sebanyak neuron hidden layer
                for j=1:2 %perulangan sebanyak neuron input
                    z_in(i,1) = z_in(i,1)+ u(j,i)*input(k,i);
                end
                z_in(i,1) = z_in(i,1)+ u0(1,i); %nilai Z_in dijumlahkan dengan nilai bobot bias
                z(i,1) = (2/(1 + exp(-z_in(i,1))))-1;
                %z(i,1) = (1-(exp(-z_in(i,1))))/(1+(exp(-z_in(i,1)))); %perhitungan aktivasi untuk nilai Z (hidden layer)
            end
           
            %perhitungan pada hidden layer kedua
            for i=1:2 %perulangan sebanyak neuron hidden layer
                for j=1:2 %perulangan sebanyak neuron input
                    zz_in(i,1) = zz_in(i,1)+v(j,i)* z(j,1);
                end
                zz_in(i,1) = zz_in(i,1) + v0(1,i); %nilai Z_in dijumlahkan dengan nilai bobot bias
                zz(i,1) = (2/(1 + exp(-zz_in(i,1))))-1;
                %zz(i,1) = (1-(exp(-zz_in(i,1))))/(1+(exp(-zz_in(i,1)))); %perhitungan aktivasi untuk nilai Z (hidden layer)
            end
           
            y_in = zeros(1,1);
            y = zeros(1,1);
            for i=1:1 %perulangan sebanyak nilai output
                for j=1:2 %perulangan sebanyak jumlah neuron hidden layer
                    y_in(i,1) = y_in(i,1)+w(j,i)*zz(j,1);
                end
                y_in(i,1) = y_in(i,1)+w0(1,i); %nilai y_in dijumlahkan dengan nilai bobot bias
                y(i,1) = (2/(1 + exp(-y_in(i,1))))-1;
                %y(i,1)=(1-(exp(-y_in(i,1))))/(1+(exp(-y_in(i,1)))); %perhitungan aktivasi untuk nilai y (output)
            end
           
            delta_w = zeros(2,1); %matriks kosong untuk nilai delta w
            delta_w0 = zeros(1,1); %matriks kosong untuk nilai w0 (w bias)
            %menghitung delta_w
            %perhitungan untuk mencari nilai sigma_k
            for i=1:1 %perulangan sebanyak nilai output
                sigma_k = (target(k,i)-y(i,1))*(1+y_in(i,1))*(1-y_in(i,1))/2; %perhitungan nilai sigma_k
                for j=1:2 %perulangan sebanyak neuron hidden layer
                    delta_w(j,i) = rate*sigma_k*zz(j,1); %perhitungan nilai delta_w
                end
                delta_w0(i,1) = rate*sigma_k; %perhitungan nilai delta_w0
            end
            sigma_inj = zeros(2,1); %matriks kosong untuk sigma_in_j
            sigma_j = zeros(2,1); %matriks kosong untuk sigma_j (yg telah di aktivasi)
            for i=1:2 %perulangan sebanyak neuron hidden layer
                for j=1:1 %perulangan sebanyak neuron output
                    sigma_inj(i,1) = sigma_inj(i,1)+ sigma_k *w(i,j); %perhitungan sigma_in_j
                end
                sigma_j(i,1) = sigma_inj(i,1)*(1+zz_in(i,1))*(1-zz_in(i,1))/2; %perhitungan sigma_j
            end
           
           
            delta_v = zeros(2,2); %matriks kosong untuk nilai delta w
            delta_v0 = zeros(1,2); %matriks kosong untuk nilai w0 (w bias)
            %menghitung delta_v
            %perhitungan untuk mencari nilai sigma_j
            for i=1:1 %perulangan sebanyak nilai output
                for j=1:2 %perulangan sebanyak neuron hidden layer
                    delta_v(j,i) = rate*sigma_j(j,1)*z(j,1); %perhitungan nilai delta_w
                end
                delta_v0(i,j) = rate*sigma_j(i,1); %perhitungan nilai delta_w0
            end
           
           
            sigma_inh = zeros(2,1); %matriks kosong untuk sigma_in_j
            sigma_h = zeros(2,1); %matriks kosong untuk sigma_j (yg telah di aktivasi)
            for i=1:2 %perulangan sebanyak neuron hidden layer
                for j=1:2 %perulangan sebanyak neuron hidden layer kedua
                    sigma_inh(i,1) = sigma_inh(i,1)+ sigma_j(j,1)*v(i,j); %perhitungan sigma_in_j
                end
                sigma_h(i,1) = sigma_inh(i,1)*(1+z_in(i,1))*(1-z_in(i,1))/2; %perhitungan sigma_j
            end
           
           
            delta_u = zeros(2,2); %matriks kosong untuk delta_v
            for i=1:2 %perulangan sebanyak neuron input
                for j=1:2 %perulangan sebanyak neuron hidden
                    delta_u(i,j)=rate*sigma_h(j,1)*input(k,j); %perhitungan delta_v
                end
            end
           
            delta_u0 = zeros(1,2); %matriks kosong untuk delta_v0
            for i=1:2 %perulangan sebanyak neuron hidden layer
                delta_u0(1,i) = rate*sigma_h(i,1); %perhitungan delta_v0
            end  
           
            for i=1:2 %perulangan sebanyak neuron hidden layer
                for j=1:1 %perulangan sebanyak output
                    w(i,j) = w(i,j)+delta_w(i,j); %perhitungan w baru
                end
            end
           
            for i=1:1 %perulangan sebanyak neuron output
                w0(1,i) = w0(1,i)+delta_w0(i,1); %perhitungan w0 baru
            end
           
            for i=1:2 %perulangan sebanyak neuron input
                for j=1:2 %perulangan sebanyak neuron hidden
                    v(i,j) = v(i,j)+delta_v(i,j); %perhitungan v baru
                end
            end
           
            for i=1:2 %perulangan sebanyak neuron hidden
                v0(1,i) = v0(1,i)+delta_v0(1,i); %perhitungan v0 baru
            end
           
             for i=1:2 %perulangan sebanyak neuron input
                for j=1:2 %perulangan sebanyak neuron hidden
                    u(i,j) = u(i,j)+delta_u(i,j); %perhitungan u baru
                end
            end
           
            for i=1:2 %perulangan sebanyak neuron hidden
                u0(1,i) = u0(1,i)+delta_u0(1,i); %perhitungan u0 baru
            end
           
        end
    else
    end
 
    %a = a + 1
end



% %testing
% %testing
z_in=zeros(2,1);
z = zeros(2,1);
for i=1:2 %perulangan sebanyak jumlah neuron hidden layer
    for j=1:2 %perulangan sebanyak jumlah neuron input
        z_in(i,1) = z_in(i,1)+u(j,i)*input(1,j);
    end
    z_in(i,1) = z_in(i,1)+u0(1,i);
    z(i,1) = (2/(1 + exp(-z_in(i,1))))-1;
    %z(i,1) = (1-(exp(-z_in(i,1))))/(1+(exp(-z_in(i,1))));
end
zz_in = zeros(2,1);
zz = zeros(2,1);
for i=1:2 %perulangan sebanyak neuron output
    for j=1:2 %perulangan sebanyak neuron hidden layer
        zz_in(i,1) = zz_in(i,1)+v(j,i)*z(j,1);
    end
    zz_in(i,1) = zz_in(i,1)+v0(1,i);
    zz(i,1) = (2/(1 + exp(-zz_in(i,1))))-1;
    %zz(i,1)=(1-(exp(-zz_in(i,1))))/(1+(exp(-zz_in(i,1))));
   
end
y_in = zeros(1,1);
y = zeros(1,1);
for i=1:1 %perulangan sebanyak neuron output
    for j=1:2 %perulangan sebanyak neuron hidden layer
        y_in(i,1) = y_in(i,1)+w(j,i)*zz(j,1);
    end
    y_in(i,1) = y_in(i,1)+w0;
    y(i,1) = (2/(1 + exp(-y_in(i,1))))-1;
    %y(i,1)=(1-(exp(-y_in(i,1))))/(1+(exp(-y_in(i,1))));
    y
end
if y<0 br="">    disp('Data 1 merupakan kelas 1');
else
    disp('Data 1 merupakan kelas 2');
end
z_in=zeros(2,1);
z = zeros(2,1);
for i=1:2 %perulangan sebanyak jumlah neuron hidden layer
    for j=1:2 %perulangan sebanyak jumlah neuron input
        z_in(i,1) = z_in(i,1)+u(j,i)*input(2,j);
    end
    z_in(i,1) = z_in(i,1)+u0(1,i);
    z(i,1) = (2/(1 + exp(-z_in(i,1))))-1;
    %z(i,1) = (1-(exp(-z_in(i,1))))/(1+(exp(-z_in(i,1))));
end
zz_in = zeros(2,1);
zz = zeros(2,1);
for i=1:2 %perulangan sebanyak neuron output
    for j=1:2 %perulangan sebanyak neuron hidden layer
        zz_in(i,1) = zz_in(i,1)+v(j,i)*z(j,1);
    end
    zz_in(i,1) = zz_in(i,1)+v0(1,i);
    zz(i,1) = (2/(1 + exp(-zz_in(i,1))))-1;
    %zz(i,1)=(1-(exp(-zz_in(i,1))))/(1+(exp(-zz_in(i,1))));
   
end
y_in = zeros(1,1);
y = zeros(1,1);
for i=1:1 %perulangan sebanyak neuron output
    for j=1:2 %perulangan sebanyak neuron hidden layer
        y_in(i,1) = y_in(i,1)+w(j,i)*zz(j,1);
    end
    y_in(i,1) = y_in(i,1)+w0;
    y(i,1) = (2/(1 + exp(-y_in(i,1))))-1;
    %y(i,1)=(1-(exp(-y_in(i,1))))/(1+(exp(-y_in(i,1))));
    y
end
if y<0 br="">    disp('Data 2 merupakan kelas 1');
else
    disp('Data 2 merupakan kelas 2');
end
z_in=zeros(2,1);
z = zeros(2,1);
for i=1:2 %perulangan sebanyak jumlah neuron hidden layer
    for j=1:2 %perulangan sebanyak jumlah neuron input
        z_in(i,1) = z_in(i,1)+u(j,i)*input(3,j);
    end
    z_in(i,1) = z_in(i,1)+u0(1,i);
    z(i,1) = (2/(1 + exp(-z_in(i,1))))-1;
    %z(i,1) = (1-(exp(-z_in(i,1))))/(1+(exp(-z_in(i,1))));
end
zz_in = zeros(2,1);
zz = zeros(2,1);
for i=1:2 %perulangan sebanyak neuron output
    for j=1:2 %perulangan sebanyak neuron hidden layer
        zz_in(i,1) = zz_in(i,1)+v(j,i)*z(j,1);
    end
    zz_in(i,1) = zz_in(i,1)+v0(1,i);
    zz(i,1) = (2/(1 + exp(-zz_in(i,1))))-1;
    %zz(i,1)=(1-(exp(-zz_in(i,1))))/(1+(exp(-zz_in(i,1))));
   
end
y_in = zeros(1,1);
y = zeros(1,1);
for i=1:1 %perulangan sebanyak neuron output
    for j=1:2 %perulangan sebanyak neuron hidden layer
        y_in(i,1) = y_in(i,1)+w(j,i)*zz(j,1);
    end
    y_in(i,1) = y_in(i,1)+w0;
    y(i,1) = (2/(1 + exp(-y_in(i,1))))-1;
    %y(i,1)=(1-(exp(-y_in(i,1))))/(1+(exp(-y_in(i,1))));
    y
end
if y<0 br="">    disp('Data 3 merupakan kelas 1');
else
    disp('Data 3 merupakan kelas 2');
end
z_in=zeros(2,1);
z = zeros(2,1);
for i=1:2 %perulangan sebanyak jumlah neuron hidden layer
    for j=1:2 %perulangan sebanyak jumlah neuron input
        z_in(i,1) = z_in(i,1)+u(j,i)*input(4,j);
    end
    z_in(i,1) = z_in(i,1)+u0(1,i);
    z(i,1) = (2/(1 + exp(-z_in(i,1))))-1;
    %z(i,1) = (1-(exp(-z_in(i,1))))/(1+(exp(-z_in(i,1))));
end
zz_in = zeros(2,1);
zz = zeros(2,1);
for i=1:2 %perulangan sebanyak neuron output
    for j=1:2 %perulangan sebanyak neuron hidden layer
        zz_in(i,1) = zz_in(i,1)+v(j,i)*z(j,1);
    end
    zz_in(i,1) = zz_in(i,1)+v0(1,i);
    zz(i,1) = (2/(1 + exp(-zz_in(i,1))))-1;
    %zz(i,1)=(1-(exp(-zz_in(i,1))))/(1+(exp(-zz_in(i,1))));
   
end
y_in = zeros(1,1);
y = zeros(1,1);
for i=1:1 %perulangan sebanyak neuron output
    for j=1:2 %perulangan sebanyak neuron hidden layer
        y_in(i,1) = y_in(i,1)+w(j,i)*zz(j,1);
    end
    y_in(i,1) = y_in(i,1)+w0;
    y(i,1) = (2/(1 + exp(-y_in(i,1))))-1;
    %y(i,1)=(1-(exp(-y_in(i,1))))/(1+(exp(-y_in(i,1))));
    y
end
if y<0 br="">    disp('Data 4 merupakan kelas 1');
else
    disp('Data 4 merupakan kelas 2');
end
     Segitu saja yang bisa aku kasi. Semoga bisa bermanfaat bagi yang memerlukan. Segitu dulu ya yang bisa aku kasi infonya. Semoga bisa bermanfaat ya bagi kita semua. Sekedar mengingatkan, setelah membaca artikel ini, minta tolong ya.. Di share ke FB atau twitter. Terus diisi ya voting yang ada di pojok kanan atas dari halaman ini. Diisi juga kolom reaksi setelah membaca artikel ini, apakah bagus, penting, bermanfaat, atau yang lainnya. Bagi yang mau copy kata-kataku, jangan sampai lupa menyertai link dari halaman ini. Kalau ada yang bingung, silahkan tuliskan pertanyaan di form komentar. Makasi :)

34 comments:

  1. mbak nia, kalau untuk jst backpropagation menggunakan 1 hidden layer tetapi datanya ambil dari access atau excell bisa gak?
    kalo boleh minta sourcode nya dunk...
    pliiisss...
    ian.screptz@gmail.com

    ReplyDelete
  2. mbak punya GUI untuk backpropagation gak, kalo ada boleh minta gak?
    trims

    ReplyDelete
  3. kk pnya GUI soal prediksi gax pake JST?
    kalau ada boleh minta ya kk

    chandra.sunarya@gmail.com

    ReplyDelete
  4. kak.. mau tanya kalau inputannya citra sama hiddennya cuma 1 cara pengujiannya gimana ya kak?? kalau boleh minta source code nya kak..
    trima kasih..

    ReplyDelete
  5. kalau inputannya berupa citra, code nya beda lagi..
    pake ekstraksi fitur..
    kalau code itu yang kamu minta aku enggak punya..
    maaf ya :(

    ReplyDelete
  6. Kak, ini perhitungan di MS. EXCEL nya ada apa tidak? saya boleh minta?

    alfa_cew9e@yahoo.co.id

    ReplyDelete
  7. mbak, mau tanya dong. perhitungan algoritma dasar BP klo di matlab itu make metode yang mana si? Incremental Mode or Batch Mode. Soalnya waktu saya nyoba ngitung data dengan matlab, hasilnya gk sama dengan perhitungan manual saya. Mohon pencerahannya mbk...

    ReplyDelete
  8. ini script yg saya masukin ke matlabnya mbk :
    clc
    p = [9761 9762 ; 93.13 93.61 ; 5.47 5.47 ];
    t = [439251.38 445657.98 ];
    net = newff(minmax(pn),[3 1],{'tansig' 'purelin'});
    net.IW{1,1}=[3.33 1.66 -1.66; 0.71 2.14 -1.42; 1.66 3.33 -1.66];
    net.b{1,1}=[0.1; 0.5; 0.2];
    net.LW{2,1}=[0.3 0.1 0.5];
    net.b{2,1}=[0.5];
    BobotAwal_input = net.IW{1,1}
    BobotAwal_Bias_input = net.b{1,1}
    BobotAwal_Lapisan = net.LW{2,1}
    BobotAwal_Bias_lapisan = net.b{2,1}
    net.trainParam.epochs = 5;
    net.trainParam.lr = 0.3;
    net=train(net,p,t);
    Bobot_Akhir_Input = net.IW{1,1}
    Bobot_Akhir_Bias = net.b{1,1}
    Bobot_Akhir_Lapisan1 = net.LW{2,1}
    Bobot_Akhir_Bias_Lapisan1 = net.b{2,1}
    y=sim(net,p)
    H = [(1:size(p,2))' t' y' (t'-y')];
    sprintf('%2d %9.2f %7.2f %5.2f\n',H')
    %evaluasi
    [m1,a1,r1] = postreg(y,t)
    pause
    plot([1:size(p,2)]',t,'bo',[1:size(p,2)]',y','r*');
    title('Hasil pengujian dengan data pelatihan: Target (o), Output(*)');
    xlabel('Data ke-'); ylabel('Target/Output');
    grid;

    ReplyDelete
  9. Batch learning proceeds as follows:
    Initialize the weights.
    Repeat the following steps:
    Process all the training data.
    Update the weights.
    Incremental learning proceeds as follows:
    Initialize the weights.
    Repeat the following steps:
    Process one training case.
    Update the weights.

    Jadi BP itu increment ya ^^

    ReplyDelete
  10. mbk, mau tanya lg dong. klo da 2 pola masukan. trus kita mau ngitung pola yang kedua, bobot yang dipakai untuk ngitung pola yg kedua itu pake bobot yg pertama atau bobot yang telah diubah..?

    ReplyDelete
  11. maksudnya 2 pola itu 2 data atau 1 data memiliki 2 input?
    kalau enggak salah ngasi tau ya, hehe, BP itu misalkan ada 4 data, jadi data pertama diproses menghasilkan bobot, nah bobot itu yang akan digunakan untuk perhitungan data kedua

    ReplyDelete
  12. mbk mau tanya lagi dong. fungsi proses pengujian di BP itu untuk apa..?

    ReplyDelete
  13. biar kam tahu apakah program BP yang kamu buat kebenarannya akurat atau kurang akurat..

    ReplyDelete
  14. Ass.
    Mbak untuk coding mengcluster gambar dengan algoritma Selft-organizing map ada nggak..?? mohon bantuannya..

    ReplyDelete
  15. Ass.
    Mbak blh minta tolong berikan petunjuk perhitungan manual jaringan kohonen,..?? Mohon bantuannya.. Terima Kasih..

    ReplyDelete
  16. Asslamualaikum
    mbk kirimin source code perceptron yg GUi dong.. :)

    ReplyDelete
  17. mas boleh minta SC GUI tolong krm ke vbfg23@gmail.com

    ReplyDelete
  18. permisi mbak nia,
    saya mau bertanya, pada source code diatas ada bagian testing kan, nah itu tujuannya untuk apa ya? lalu mengapa ada semacam kesalahan pada :

    if y<0 br=""> disp('Data 1 merupakan kelas 1');
    |
    Error: The input character is not valid in MATLAB statements or expressions.

    kemudian yang kedua, ketika saya ingin melakukan train network pada nntool mengapa muncul window peringatan yang bertuliskan :

    inputs and targets have different number of samples.

    mohon pencerahannya ya mbak nia, terima kasih banyak sebelumnya untuk blog yang bermanfaat ini.

    ReplyDelete
  19. How it is Implement with UCI Dataset

    ReplyDelete
  20. mbak boleh tau GUI nya nggak, bisa dikirim ke email saya izzatika@gmail.com karna tugas akhir saya tentang backpropagattion, makasih sebelumnya

    ReplyDelete
  21. Halo kak nia,
    Mau nanya dong. Dalam proses testing dibutuhkan penghitungan mse juga nggak?

    ReplyDelete
  22. permisi mba mau tanya kalau yang untuk 3 layer (input, hidden dan output) ada tidak?

    ReplyDelete
  23. permisi mba mau tanya kalau yang untuk 3 layer (input, hidden dan output) ada tidak?

    ReplyDelete
  24. permisi mba mau tanya kalau yang untuk 3 layer (input, hidden dan output) ada tidak?

    ReplyDelete
  25. Wah, Tutorialnya keren banget yah. semangat ngepost, biar makin banyak tutorial yang menarik yang dapat dipelajari.

    Salam Sukses Blogger's.

    ReplyDelete
  26. mbak..td coba running tp ada error di

    Error in BPtest03 (line 264)
    if y<0 br=""> disp('Data 1 merupakan kelas 1');
    maksudnya gmn mbak..biar sukses di runnya...mohon infonya..tks

    ReplyDelete
  27. mbak..udh sy run cuma error...gmn caranya mbak..tolong infonya..tks
    Error in BPtest03 (line 264)
    if y<0 br=''> disp('Data 1 merupakan kelas 1');

    ReplyDelete
  28. Error in BPtest03 (line 264)
    if y<0 br=''> disp('Data 1 merupakan kelas 1');
    mbak koq gakbs di run...bs tolong sarannya mgkn ada yg hrs dimodifikasi

    ReplyDelete
  29. mbak ada source code backpropagation menggunakan delphi gak? kalau ada minta donk

    ReplyDelete
  30. mbak ada source code backpropagation di delphi gak? kalau ada minta donk

    ReplyDelete

Social Profiles

Twitter Facebook Google Plus LinkedIn RSS Feed Email Pinterest

Welcome !!!

Selamat datang di blogku. Semoga informasi yang aku buat bermanfaat ya bagi kalian. Jangan lupa, setelah membaca di share ya, dan ikuti polling dibawah ini. Jangan lupa mengunjungi blogku yang lain di http://nialovepets.blogspot.com/ Makasi :)

Total Pageviews

Copyright © Niia Blog | Powered by Blogger
Design by Lizard Themes | Blogger Theme by Lasantha - PremiumBloggerTemplates.com