Dosen Pengampu :
Nurul Khairina, S.Kom, M.Kom
Alhamdulillah, segala puji bagi Allah SWT. Atas rahmat dan karunianya, Modul
Praktikum Jaringan Syaraf Tiruan ini dapat diselesaikan dengan baik. Modul ini terdiri
dari 10 pertemuan yaitu : pengenalan Matlab dengan matriks, vektor, skalar, program
Matlab dengan M-File, jaringan Hebb, Perceptron, Adaline, Backpropagation, jaringan
Kompetitif/ Kohonen, Self Organizing Feature Map (SOFM), Hopfield, dan Jarngan
Learning Vector Quantization (LVQ). Modul ini diharapkan dapat membantu mahasiswa
dalam memahami praktikum Jaringan Syaraf Tiruan yang akan dibangun dengan Matlab
2018b. Kritik dan saran yang membangun akan sangat diharapkan untuk perkembangan
modul praktikum ini.
1
DAFTAR ISI
Kata Pengantar 1
Daftar Isi 2
Modul 1 : Pengenalan Matlab dengan Matriks, Vektor, Skalar 3
Modul 2 : Program Matlab dengan M-File 10
Modul 3 : Jaringan Hebb 16
Modul 4 : Jaringan Perceptron 19
Modul 5 : Jaringan Adaline 23
Modul 6 : Jaringan Backpropagation 25
Modul 7 : Jaringan Kompetitif/ Kohonen 28
Modul 8 : Jaringan Self Organizing Feature Map (SOFM) 31
Modul 9 : Jaringan Hopfield 34
Modul 10 : Jaringan Learning Vector Quantization (LVQ) 40
Daftar Pustaka 42
Lampiran : Format Laporan Praktikum 43
2
MODUL 1
Pengenalan MATLAB dengan Matriks, Vektor, dan Skalar
Tujuan :
Mahasiswa diharapkan dapat mengenal Matlab melalui perintah-perintah sederhana
tentang matriks, vektor, dan skalar.
2. Matriks :
Matriks merupakan elemen dasar dalam Matlab, terdapat dua jenis matriks, yaitu
matriks yang dapat dibentuk sendiri dengan perintah-perintah yang ada di matlab, dan
juga matriks yang secara otomatis sudah dibentuk oleh matlab.
a. Matriks Umum :
Untuk membuat matriks umum yang kita inputkan sendiri, perintah bisa langsung
diketikkan di command window :
3
Perintah :
Hasil :
b. Matriks Kusus :
Untuk membuat matriks kusus, kita bisa menggunakan perintah-perintah kusus yang
ada pada Matlab.
1) Matriks Diagonal :
Perintah :
Hasil :
2) Matriks Identitas :
Perintah :
Hasil :
4
3) Matriks Random :
Perintah :
Hasil :
4) Matriks Nol :
Perintah :
Hasil :
5) Matriks Satuan :
Perintah :
Hasil :
3. Vektor :
Vektor merupakan bentuk matriks yang hanya terdiri dari sebuah kolom (vektor
kolom) atau sebuah baris (vektor baris).
5
Contoh 1 :
Perintah :
Hasil :
Contoh 2 :
Perintah :
Hasil :
4. Operasi Skalar :
Terdapat beberapa perintah Matlab dalam operasi skalar, antara lain :
Operator Keterangan
+ Penjumlahan skalar
- Pengurangan skalar
* Perkalian skalar
/ Pembagian skalar
^ Pangkat
6
Contoh :
Hasil :
Hasil :
Perintah A + C :
Hasil :
Perintah A - C :
Hasil :
Perintah A * C :
7
Perintah Mod :
Hasil :
5. Manipulasi Matriks :
Manipulasi matriks terdiri dari dua perintah, yaitu transpose matriks dan mencari
invers matriks.
a. Transpose Matriks
Perintah :
Hasil :
Hasil :
b. Ordo Matriks :
Perintah :
Hasil :
8
c. Invers Matriks
Perintah :
Hasil :
Tugas :
9
MODUL 2
Program MATLAB dengan M-FILE
Tujuan :
Mahasiswa diharapkan dapat membuat program sederhana dengan M-File pada Matlab.
1. M – File / Script :
M – File merupakan jendela kusus untuk menuliskan script program yang dapat
dijalankan di command window matlab. M-File dapat dibuka melalui menu New – Script,
seperti pada gambar dibawah ini :
Contoh 1 :
Perintah :
function cekmatriks
clc
a = input ('masukkan matriks A = ');
b = input ('masukkan matriks B = ');
if isequal(a,b)
disp('kedua matriks sama')
else
disp('kedua matriks tidak sama')
end
10
Hasil :
Contoh 2 :
Perintah :
function pangkatmatriks
clc
a = input('masukkan matriks A = ');
k = input('masukkan pangkat matriks = ');
[m,n] = size(a);
if m == n
ak = a^k;
disp('ak = ')
disp(ak)
else
disp('matriks bukan bujur sangkar')
end
Hasil :
2. Statement Perulangan :
a. Perulangan For :
Perintah :
function pangkatmatriksfor
clc
a = input('masukkan matriks A = ');
k = input('masukkan pangkat matriks = ');
[m,n] = size(a);
11
if m == n
for i = 1:k
ak = a^i;
fprintf('a^%d = \n',i)
disp(ak)
end
else
disp('matriks bukan bujur sangkat');
end
Hasil :
b. Perulangan While :
Perintah :
function suku
clc
n = input('masukkan jumlah suku : ');
i = 1;
sum = 0;
while i <= n
sum = sum + 1/i;
i = i + 1;
end
disp('Total : ')
disp(sum)
Hasil :
12
3. Grafik
Contoh 1 :
Perintah :
>> x = [ 0 : 0.1 : 10 ];
>> y = sin(x);
>> plot(x,y)
Hasil :
Contoh 2 :
Perintah :
>> x = [ 0 : 0.1 : 10 ];
>> y = sin(x);
>> plot(x,y), xlabel (‘x’), ylabel(‘cos(x)’);
Hasil :
13
b. Grafik dengan M-File :
Lakukan ujicoba membangun grafik dengan mengetikkan perintah dibawah ini pada
M-File/Script Matlab.
Perintah :
function grafik
x = -5:0.02:5;
p1 = [ 1 2 -5];
p2 = [ 1 0 0];
y1 = polyval (p1,x);
y2 = polyval (p2,x);
figure(1)
subplot(1,1,1)
plot(x, y1, x, y2);
Hasil :
14
Tugas :
1. Buatlah program dibawah ini dengan M-File / Script :
a. Volume Lingkaran
b. Volume Tabung
2. Buatlah fungsi pada M-File/ Script dengan menggunakan perulangan for atau while
untuk menampilkan bilangan prima antara 1 sampai dengan 1000.
3. Buatlah grafik fungsi ini dengan Command Window :
a. y = x3
b. Cosinus untuk sudut trigonometri dari 0º - 360º
15
MODUL 3
Jaringan Hebb
Tujuan :
Mahasiswa diharapkan dapat membuat program jaringan Hebb pada Matlab.
x = [1 -1 1 -1 ; 1 1 -1 -1]; %input
t = [1 -1 -1 -1]; %target fungsi logika AND
w = [0 0]; %bobot
b = 0; %bias
for i = 1 : 4
for j = 1 : 2
w(j) = w(j) + t(i) * x(j,i); %proses perubahan bobot
end
b = b + t(i);
end
16
disp('Bobot Baru :');
disp(w);
m = -(w(1)/ w(2));
c = -b/w(2);
x1 = linspace(-2,2,100);
x2 = m*x1 + c;
plot(x2, x1, 'r');
axis([-2 2 -2 2]);
Hasil :
Bobot dan Bias Baru :
17
Tugas :
Lakukan pelatihan pengenalan pola dengan jaringan Hebb, dimana :
a. input x1 dan x2 biner dan target bipolar untuk fungsi logika OR
b. input x1 dan x2 bipolar dan target biner untuk fungsi logika XOR
c. input x1 dan x2 biner dan target bipolar untuk fungsi logika NAND
Dari hasil pelatihan, tuliskan bobot baru, bias baru beserta visualisasi hasil pelatihannya
dalam grafik.
18
MODUL 4
Jaringan Perceptron
Tujuan :
Mahasiswa diharapkan dapat membuat program jaringan Perceptron pada Matlab.
p1 = [1 ; 1]; %input
p2 = [1 ; 0];
p3 = [0 ; 1];
p4 = [0 ; 0];
t1 = 1; %target
t2 = 0;
t3 = 0;
t4 = 0;
p = [p1 p2 p3 p4];
t = [t1 t2 t3 t4];
19
net = newp([0 1 ; 0 1], 1); %pembentukan jaringan perceptron
bobot = [-1 1];
net.IW{1, 1} = bobot;
bias = [1];
net.b{1} = bias;
Hasil :
Dari hasil pelatihan ini, dapat dilihat bahwa f(net) belum sama dengan target,
sehingga dilakukan perubahan bobot pada tahap selanjutnya.
p = [p1 p2 p3 p4];
t = [t1 t2 t3 t4];
20
%proses ubah bobot pola p1
disp('pola p1 : ')
a1 = sim(net,p1)
e1 = t1 - a1
dW = learnp(bobot, p1, [], [], [], [], e1, [], [], [], [],
[])
bobot = bobot + dW
Hasil :
Perintah :
function trainperceptron
p = [[1 ; 1] [1 ; 0] [0 ; 1] [0 ; 0]];
t = [1 1 1 0];
net = train(net, p, t);
21
Hasil :
Tugas :
Dari program latihan No. 5 : “Mengubah Bobot Pola P1 pada Perceptron”, buatlah
program mengubah bobot untuk pola P2, P3, dan P4, serta tampilkan hasil perubahan
bobot yang diperoleh.
22
MODUL 5
Jaringan Adaline
Tujuan :
Mahasiswa diharapkan dapat membuat program jaringan Adaline pada Matlab.
Hasil :
23
Hasil pelatihan :
Tugas :
1. Buatlah program Adaline untuk mengenali fungsi logika OR, tampilkan hasil
modifikasi bobot, hasil pelatihan, output jaringan dan error.
2. Buatlah program Adaline untuk mengenali fungsi logika XOR, tampilkan hasil
modifikasi bobot, hasil pelatihan, output jaringan dan error.
24
MODUL 6
Jaringan Backpropagation
Tujuan :
Mahasiswa diharapkan dapat membuat program jaringan Backpropagation pada Matlab.
Hasil :
25
3. Program Backpropagation dengan Metode Penurunan Tercepat :
Program :
function trainbackpropagation
p = [-1 -1 2 2 ; 0 5 0 5];
t = [-1 -1 1 1];
net = newff(minmax (p), [3,1], {'tansig', 'purelin'},
'traingd');
Hasil :
Tugas :
Buatlah program Backpropagation untuk menghitung keluaran jaringan layer 2-4-3-1
dengan bobot dan bias seperti pada tabel dibawah ini :
26
Hidden Unit
Layer 1 x1 x2 b
z2 0.4 0 -0.1
27
MODUL 7
Jaringan Kompetitif/ Kohonen
Tujuan :
Mahasiswa diharapkan dapat membuat program jaringan Jaringan Kompetitif (Kohonen)
pada Matlab.
Hasil :
28
3. Program Jaringan Kohonen dengan Command Window :
Program Lanjutan :
>> b = sim(net,p)
>> ac = vec2ind(b)
>> net = init(net);
>> net.trainParam.epochs = 500 %pelatihan kohonen
>> net = train(net,p)
Hasil :
29
Tugas :
1. Lakukan pelatihan dengan jaringan kohonen sebanyak 500 epoch untuk membagi 30
vektor menjadi 6 kelompok. Data vektor terdiri dari bilangan positif diantara 0 dan 1.
2. Lakukan pelatihan dengan jaringan kohonen sebanyak 500 epoch untuk membagi 50
vektor menjadi 5 kelompok. Data vektor terdiri dari bilangan positif diantara 0 dan 1.
30
MODUL 8
Jaringan Self Organizing Feature Map (SOFM)
Tujuan :
Mahasiswa diharapkan dapat membuat program jaringan Jaringan Self Organizing
Feature Map (SOFM) pada Matlab.
b. Hextop
Perintah :
>> pos = hextop(5,6)
>> plotsom (pos)
c. Randtop
Perintah : a. Gridtop
b. Hextop
c. Randtop
31
2. Jarak Euclidean dengan Command Window :
Program :
>> pos2 = [0 1 2 ; 0 1 2]
>> D2 = dist(pos2)
>> pos = gridtop(2,3)
>> d = boxdist(pos)
Hasil :
32
Hasil :
Tugas :
33
MODUL 9
Jaringan Hopfield
Tujuan :
Mahasiswa diharapkan dapat membuat program jaringan Jaringan Hopfield pada Matlab.
Program Hopfield :
function varargout = hopfieldNetwork(varargin)
% HOPFIELDNETWORK M-file for hopfieldNetwork.fig
% HOPFIELDNETWORK, by itself, creates a new HOPFIELDNETWORK or
raises the existing
% singleton*.
%
% H = HOPFIELDNETWORK returns the handle to a new HOPFIELDNETWORK
or the handle to
% the existing singleton*.
%
% HOPFIELDNETWORK('CALLBACK',hObject,eventData,handles,...) calls
the local
% function named CALLBACK in HOPFIELDNETWORK.M with the given
input arguments.
%
% HOPFIELDNETWORK('Property','Value',...) creates a new
HOPFIELDNETWORK or raises the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before hopfieldNetwork_OpeningFunction gets
called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to hopfieldNetwork_OpeningFcn via
varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows
only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
34
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Outputs from this function are returned to the command line.
function varargout = hopfieldNetwork_OutputFcn(hObject, eventdata,
handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
35
% hObject handle to imageSize (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
num = get(hObject,'string');
n = str2num(num);
if isempty(n)
num = '32';
set(hObject,'string',num);
end
if n > 32
warndlg('It is strongly recomended NOT to work with networks
with more then 32^2 neurons!','!! Warning !!')
end
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
Npattern = length(handles.hPatternsDisplay);
if Npattern > 9
msgbox('more then 10 paterns isn''t supported!','error');
return
end
im = getimage(handles.neurons);
N = get(handles.imageSize,'string');
N = str2num(N);
36
W = handles.W; %weights vector
avg = mean(im(:)); %removing the cross talk part
if ~isempty(W)
%W = W +( kron(im,im))/(N^2);
W = W + ( kron(im-avg,im-avg))/(N^2)/avg/(1-avg);
else
% W = kron(im,im)/(N^2);
W = ( kron(im-avg,im-avg))/(N^2)/avg/(1-avg);
end
% Erasing self weight
ind = 1:N^2;
f = find(mod(ind,N+1)==1);
W(ind(f),ind(f)) = 0;
handles.W = W;
if Npattern > 0
for n=1 : Npattern
x = xStart+(n+offset-1)*xStep;
h = handles.hPatternsDisplay(n);
set(h,'units','normalized');
set(h,'position',[x y width height]);
end
x = xStart+(n+offset)*xStep;
h = axes('units','normalized','position',[x y width height]);
handles.hPatternsDisplay(n+1) = h;
imagesc(im,'Parent',h);
else
x = xStart+(offset)*xStep;
h = axes('units','normalized','position',[x y width height]);
handles.hPatternsDisplay = h;
end
imagesc(im,'Parent',h);
set(h,
'YTick',[],'XTick',[],'XTickMode','manual','Parent',handles.learnedPat
erns);
guidata(hObject, handles);
37
ind = ceil(rand(N,1)*length(im(:)));
% im(ind) = -1*im(ind); %!!!!
im(ind) = ~im(ind);
imagesc(im,'Parent',handles.neurons);
colormap('gray');
function im = fixImage(im,N)
% if isrgb(im)
if length( size(im) ) == 3
im = rgb2gray(im);
end
im = double(im);
m = min(im(:));
M = max(im(:));
im = (im-m)/(M-m); %normelizing the image
im = imresize(im,[N N],'bilinear');
%im = (im > 0.5)*2-1; %changing image values to -1 & 1
im = (im > 0.5); %changing image values to 0 & 1
38
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range
of slider
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
Hasil :
Tugas :
Lakukan uji coba pengenalan 5 pola objek bebas dengan ukuran noise yang berbeda. Beri
kesimpulan apakah jaringan dapat mengenali pola dengan baik atau tidak.
39
MODUL 10
Jaringan Learning Vector Quantization (LVQ)
Tujuan :
Mahasiswa diharapkan dapat membuat program jaringan Jaringan Learning Vector
Quantization (LVQ) pada Matlab.
T = ind2vec(tc);
targets = full(T);
W1 = net.IW{1};
plot(W1 (1,1), W1(1,2),'ow');
title('input/weight vectors');
xlabel('p(1), W(1)');
ylabel('p(2), W(3)');
net.LW{2,1};
net.trainParam.epochs = 150;
net = train(net,p,T);
net.IW{1,1};
cla;
plotvec{p,tc)
hold on;
plotvec(net.IW{1,1}',vec2ind{net.LW{2,1}),'O')
40
y = sim(net,p);
yc = vec2ind(y)
Hasil :
Tugas :
41
DAFTAR PUSTAKA
Siang, Jong Jek. 2009. Jaringan Syaraf Tiruan & Pemrogramannya Menggunakan
MATLAB. Yogyakarta : Penerbit Andi
Sharif, Amer. 2011. Buku Penuntun Praktikum Jaringan Syaraf Tiruan. Medan :
Universitas Sumatera Utara
Demuth, H. & Beale, M. 2009. Neural Network Toolbox For Use With MATLAB
User’s Guide, Natick: The MathWokrs Inc.
42
LAMPIRAN
1. Sampul :
2. Format Laporan :
Sampul
Kata Pengantar
Daftar Isi
Hasil Praktikum
Daftar Pustaka
43
3. Hasil Praktikum :
Bagian ini terdiri atas soal tugas, program, hasil uji coba (screen shoot) dan
pembahasan.
44