Appendix
Appendix
LAMPIRAN A
SOURCE CODE PROGRAM
clear all;
clc;
%inisialisasi jaringan
M=input ('Jumlah_Neuron_Tersembunyi = ' );
[n,N]=size(Ptrain);
[m,N]=size(Ttrain);
function y = bp2val(P,W1,W2);
%--------------------------------------------------------
% BP2VAL - Fungsi untuk menghitung nilai keluaran
aktual dari jaringan saraf propagasi balik dengan satu
lapisan tersembunyi
% y = bp2val(P,W1,W2)
% P - matriks berukuran n x N, berisi N buah vektor data
masukan berdimensi n
% W1 - Bobot-bobot dari lapisan masukan ke lapisan
tersembunyi
% W2 - Bobot-bobot dari lapisan tersembunyi ke lapisan
keluaran
% y - matriks berukuran m x N, berisi N buah vektor data
keluaran berdimensi m
%--------------------------------------------------------
[n,N] = size(P);
[m,M] = size(W2);
y = zeros(m,N);
for i=1:N
v1 = W1 * [P(:,i)' 1]';
xout1 = logsig(v1);
v2 = W2 * [xout1' 1]';
xout2 = logsig(v2);
y(:,i) = xout2;
end
clear all;
clc;
%inisialisasi pelatihan
M=input('jumlah_neuron_lapisan_tersembunyi = ');
Tp=input('[alpha betha] = ' );
%pelatihan 2 faktor
[W1,W2,E]=bp2m(Ptrain,Ttrain,M,Tp,W1,W2);
[n,N]=size(Ptrain);
[m,N]=size(Ttrain);
%inisialisasi
alpha = Tp(1);
beta = Tp(2);
Accuracy =0.01;
E=[];
SSE = Accuracy+1;
iter = 0;
dWnew1 = zeros(size(W1));
dWnew2 = zeros(size(W2));
%Pelatihan jaringan
while SSE>Accuracy
iter=iter+1
for i=1:N
dWold1=dWnew1;
dWold2=dWnew2;
v1=W1*[Ptrain(:,i)' 1]';
xout1=logsig(v1);
g1=diag(xout1) * (ones(size(xout1))-xout1);
v2=W2 * [xout1' 1]';
xout2= logsig(v2);
g2=diag(xout2) * (ones(size(xout2))-xout2);
D2=diag(g2)*(Ttrain(:,i)-xout2);
D1=diag(g1)*W2(1:m,1:M)'*D2;
dWnew2=D2*[xout1' 1];
dWnew1=D1*[Ptrain(:,i)' 1];
W1=W1+alpha*(dWnew1+beta*dWold1);
W2=W2+alpha*(dWnew2+beta*dWold2);
end
y=bp2val(Ptrain,W1,W2);
SSE=sum(sum(((Ttrain - y).^2)/2));
E=[E;SSE];
end
W1b=W1;
W2b=W2;
%simpan bobotbaru
save bobotbaru2 W1b W2b;
%Gambar grafik
a=[1:iter]
b=E(a,:);
plot(a,b);
title('Grafik Pelatihan Jaringan Backpropagation');
xlabel('Epoch');
ylabel('SSE');
clear all;
clc;
load data;
load bobotbaru2;
[n,N]=size(Ptrain);
y=bp2val(Ptrain,W1b,W2b);
Y=round(y);
dikenali=0;
for i=1:N
A=Y(:,i);
B=Ttrain(:,i);
C=isequal(A,B);
if C==1
disp('DIKENALI');
dikenali=dikenali+1;
else
disp('TIDAK_DIKENALI');
end
end
jumlah_dikenali=dikenali;
persentase=(jumlah_dikenali/N)*100;
clear all;
clc;
load data_uji;
load bobotbaru2;
[n,N]=size(P_uji);
y=bp2val(P_uji,W1b,W2b);
Y=round(y);
dikenali=0;
for i=1:N
A=Y(:,i);
B=T_uji(:,i);
C=isequal(A,B);
if C==1
disp('DIKENALI');
dikenali=dikenali+1;
else
disp('TIDAK DIKENALI');
end
end
jumlah_dikenali=dikenali;
persentase=(jumlah_dikenali/N)*100;
LAMPIRAN B
HASIL SCANNER HURUF