Anda di halaman 1dari 45

MODUL PRAKTIKUM

JARINGAN SYARAF TIRUAN

Dosen Pengampu :
Nurul Khairina, S.Kom, M.Kom

PROGRAM STUDI S1 TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS MEDAN AREA
2019
KATA PENGANTAR

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.

Medan, 9 Oktober 2019

Nurul Khairina, S.Kom, M.Kom

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.

1. Tampilan Jendela Awal Matlab 2018b :


Berikut ini tampilan awal lembar kerja Matlab. Untuk menggunakan Matlab, seluruh
perintah dapat diketik di Command Window. Beberapa perintah yang ada di Matlab :
a. Enter : untuk melihat perintah yang kita inputkan
b. clc : untuk menghapus layar
c. Panah bawah : untuk melihat history perintah yang sudah pernah diketikkan

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

mod (m,n) Modulo antara m dan n

fix (n) Pembulatan terdekat n ke arah 0

floor (n) Pembulatan terdekat ke arah - ∞

ceil (n) Pembulatan terdekat ke arah + ∞

round (n) Pembulatan n ke bilangan terdekat

6
Contoh :

 Perintah membentuk matriks A :

 Hasil :

 Perintah membentuk matriks C :

 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 :

 Perintah Transpose Matriks :

 Hasil :

b. Ordo Matriks :
 Perintah :

 Hasil :

8
c. Invers Matriks
 Perintah :

 Hasil :

Tugas :

Terdapat matriks X dan Y sebagai berikut :


−1 2 2 −2
𝑋= [ ] 𝑌=[ ]
3 0 5 7
Hitung :
a. X + Y
b. X - 2Y
c. X T
d. 2X + Y -1

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

Selain untuk pemrograman yang telah dipaparkan sebelumnya, MATLAB juga


memiliki beberapa perintah untuk membangun grafik.

a. Grafik dengan Command Window :

Lakukan uji coba membangun grafik trigonometri sinus dengan mengetikkan


perintah dibawah ini pada command window Matlab.

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.

1. Memberikan Input pada Jaringan :


Jaringan menerima input dan target berupa matriks, input dan target dapat
berbentuk biner maupun bipolar. Pada Matlab, perintah memberikan input, target, bobot
awal dan bias awal dapat dilakukan dengan perintah :
x = [1 -1 1 -1 ; 1 1 -1 -1]; %input
t = [1 -1 -1 -1]; %target
w = [0 0]; %bobot
b = 0; %bias

2. Melakukan perhitungan bobot dan bias :


Pada proses pelatihan jaringan Hebb, input akan diproses sehingga dapat
menghasilkan output yang akan sama dengan target. Perubahan bobot dan bias pada
jaringan Hebb dapat dilakukan dengan perintah :
w(j) = w(j) + t(i) * x(j,i); %proses perubahan bobot
b = b + t(i); %proses perubahan bias

3. Program Jaringan Hebb dengan M-File / Script :


Lakukan uji coba program jaringan Hebb berikut ini yang dapat diketikkan pada M-
File/Script :
 Perintah :
function Hebb
clc

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);

disp('Bias Baru : ');


disp(b);

plot(x(1,1), x(2,1), 'or', 'MarkerSize',20,'MarkerFaceColor',


[0 0 1]);hold on;
plot(x(1,2), x(2,2), 'or', 'MarkerSize',20,'MarkerFaceColor',
[1 0 0]);hold on;
plot(x(1,3), x(2,3), 'or', 'MarkerSize',20,'MarkerFaceColor',
[1 0 0]);hold on;
plot(x(1,4), x(2,4), 'or', 'MarkerSize',20,'MarkerFaceColor',
[1 0 0]);hold on;

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 :

 Visualisasi hasil pelatihan dengan grafik :

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.

1. Membentuk Jaringan Perceptron :


Jaringan Perceptron baru, dapat dibentuk dari perintah :
net = newp([0 1 ; 0 1], 1);

2. Melakukan Pengaturan Bobot dan Bias :


Dalam pelatihan jaringan perceptron, pengaturan bobot dan bias dapat dilakukan
dengan perintah :
net.IW{1, 1} = bobot;
net.b{1} = bias;

3. Menghitung F(net)/ Output Jaringan :


Pada akhir pelatihan, terdapat f(net) yang dapat menentukan output dari pelatihan,
f(net) dapat dilakukan dengan perintah :
a = sim(net, p);

4. Program Jaringan Perceptron dengan M-File/Script :


Lakukan uji coba membangun jaringan perceptron dengan mengetikkan perintah
berikut pada M-File/Script Matlab :
 Perintah :
function perceptron

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;

a = sim(net, p); %menghitung f(net)


disp(‘f(net) :');
disp(a);

 Hasil :

 Dari hasil pelatihan ini, dapat dilihat bahwa f(net) belum sama dengan target,
sehingga dilakukan perubahan bobot pada tahap selanjutnya.

5. Mengubah Bobot Pola P1 pada Perceptron :


Pada perceptron, setelah melakukan perhitungan f(net), maka dilakukanlah perubahan
bobot pada setiap pola yang ada, berikut ini perintah yang dapat diketikkan :
 Perintah :
function perceptronubahbobot
%mengubah bobot pola p1
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];

net = newp([0 1 ; 0 1], 1); %pembentukan jaringan perceptron


bobot = [-1 1];
net.IW{1, 1} = bobot;
bias = [1];
net.b{1} = bias;

%a = sim(net, p); %menghitung f(net)


%disp(a);

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 :

6. Pelatihan Jaringan Perceptron :


Melakukan perubahan bobot dan mencari bobot optimal, dapat digunakan perintah
sim dan learnp. Namun untuk mempermudah proses pelatihan perceptron, Matlabh
menyediakan perintah kusus, yaitu :
net = train (net, p, t)

 Perintah :
function trainperceptron

net = newp([0 1 ; 0 1], 1); %pembentukan jaringan perceptron


net.IW{1, 1} = [-1 1];
net.b{1} = 1;

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.

1. Membentuk Jaringan Adaline :


Jaringan Adaline baru, dapat dibentuk dari perintah :
net = newlin([0 10 ; 0 10], 1)
net.IW(1,1) = [2 3]
net.b [1] = [-4]

2. Program Jaringan Adaline dengan M-File/Script :


 Program :
function adaline
%pembentukan jaringan adeline
net = newlin([-1 1 ; -1 1], 1);

%input logika AND


p = [[1 ; 1] [1 ; -1] [-1 ; 1] [-1 ; -1]]; t = [1 -1 -1 -
1];
net.IW{1, 1} = [2 3];
net.b{1} = -4;
a = sim(net,p)
net = train(net,p,t) %training
disp(net.iw{1,1}) %perubahan bobot
disp(net.b{1}) %perubahan bias
a2 = sim(net,p) %ouput jaringan
error = t - sim(net,p)

 Hasil :

Bobot hasil iterasi :

23
Hasil pelatihan :

Output jaringan dan error :

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.

1. Membentuk Jaringan Backpropagation :


Jaringan Backpropagation dapat dibentuk dari perintah :
Net = newff(PR, [S1 S2…N], {TF1 TF2…TFN}, BTF, BLF, PF)

2. Program Backpropagation dengan M-File/Script :


 Program :
function backpropagation
p = [0.5; 1.3];
net = newff([-1 2; -1 2],[4,3,1]); %layer 2-4-3-1

%bobot unit masukan


net.IW{1,1} = [-1.3 0.7 ; 0.5 0 ; 1.3 -0.4; -0.1 1.2];

%bobot bias unit masukan


net.b{1} = [0.3 ; -0.1 ; -0.9 ; 0.5];

%bobot hidden layer 1


net.LW{2,1} = [0.4 0.3 -1 -0.3 ; 0.6 0 -0.6 -1.2 ; 0.4 -
0.3 0.2 0.9];

%bobot bias hidden layer 1


net.b{2} = [0.5 ; -1.3 ; -0.3];

%bobot hidden layer 2


net.LW{3,2} = [0.4 0.9 -0.1];

%bobot bias hidden layer 2


net.b{3} = [-1];
y = sim(net,p)

 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');

%backpropagation layer 2-3-1


net.IW{1,1};
net.b{1};
net.LW{2,1}; %bobot hidden layer
net.b{2};
net = train(net,p,t);

 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

z1 -1.1 0.5 0.2

z2 0.4 0 -0.1

z2 1.2 -0.3 -0.7

z2 -0.1 1.1 0.4

Hidden Dari Hidden Layer 1


Layer 2 z1 z2 z3 z4 b

v1 0.3 0.2 -1 -0.2 0.4

v2 0.5 0 -0.7 -1.2 -1.2

v2 0.3 -0.2 0.3 0.7 -0.2

Dari Hidden Layer 2


Output
z1 z2 z3 b

y1 0.3 0.8 -0.2 -1

27
MODUL 7
Jaringan Kompetitif/ Kohonen

Tujuan :
Mahasiswa diharapkan dapat membuat program jaringan Jaringan Kompetitif (Kohonen)
pada Matlab.

1. Membentuk Jaringan Kompetitif :


Jaringan Kohonen dapat dibentuk dari perintah :
net = newc(PR, S, KLR, CLR)

2. Program Jaringan Kompetitif dengan Command Window :


 Program :
>> p = [0.1985 0.3425 0.0124 0.2132 0.1045 0.2346 0.4241
0.0123 0.0014 0.0009 0.1876 0.4532 0.3241 0.3134;
0.1424 0.0100 0.1948 0.9325 0.6456 0.3456 0.4533
0.1425 0.3290 0.3246 0.0913 0.2452 0.2156 0.3214]
%pengelompokan 14 vektor kedalam 5 kelompok
%membentuk jaringan kompetitif
>> net = newc([0 1 ; 0 1], 5);
>> net.IW{1,1}
>> net.b{1}
>> net = train(net,p);

 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.

1. Topologi Neuron dengan Command Window :


a. Gridtop
 Perintah :
>> pos = gridtop(5,6)
>> plotsom (pos)

b. Hextop
 Perintah :
>> pos = hextop(5,6)
>> plotsom (pos)

c. Randtop
 Perintah : a. Gridtop

>> pos = randtop(5,6)


>> plotsom (pos)

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 :

3. Jarak Manhattan dengan Command Window :


 Program :
>> md = mandist(pos)
 Hasil :

4. Membuat Jaringan SOFM dengan M-File/Script :


 Program :
function SOFM
p = [0.1 0.3 0.2 0.2 0.1 0.2 0.4 1.2 1.4 0.9 0.7 0.3 0.3
0.1; 0.4 0.1 0.8 0.5 0.6 0.5 0.4 0.1 0.3 0.3 0.9 0.2
0.1 0.3];
net = newsom([0 2 ; 0 1], [2 3]);
plot(p(1, :), p(2,:),'.g','markersize',20)
hold on
plotsom(net.iw{1,1}, net.layers{1}.distances)
hold off
%melatih jaringan selama 1000 epoch
net.trainParam.epochs = 1000;
net = train(net,p);

32
 Hasil :

Tugas :

1. Gambarkan topologi 40 neuron (2 dimensi) dalam 5 baris dan 8 kolom. Gambarkan


dengan 3 topologi jaringan yang berbeda, yaitu gridtop, hextop, dan randtop.
2. Lakukan pelatihan 30 buah vektor dengan jaringan SOFM. Vektor dapat dibentuk
secara acak dengan rentang [0 1] ke dalam jaringan topologi heksagonal. Lakukan
pelatihan dengan 1000 epoch.

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

% Copyright 2002-2003 The MathWorks, Inc.

% Edit the above text to modify the response to help hopfieldNetwork

% Last Modified by GUIDE v2.5 21-Jan-2007 15:45:38

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @hopfieldNetwork_OpeningFcn, ...
'gui_OutputFcn', @hopfieldNetwork_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);

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

% --- Executes just before hopfieldNetwork is made visible.


function hopfieldNetwork_OpeningFcn(hObject, eventdata, handles,
varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to hopfieldNetwork (see VARARGIN)

% Choose default command line output for hopfieldNetwork


handles.output = hObject;
N = str2num(get(handles.imageSize,'string'));
handles.W = [];
handles.hPatternsDisplay = [];

% Update handles structure


guidata(hObject, handles);

% UIWAIT makes hopfieldNetwork wait for user response (see UIRESUME)


% uiwait(handles.figure1);

% --- 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)

% Get default command line output from handles structure


varargout{1} = handles.output;

% --- Executes on button press in reset.


function reset_Callback(hObject, eventdata, handles)
% cleans all data and enables the change of the number of neurons used
for n=1 : length(handles.hPatternsDisplay)
delete(handles.hPatternsDisplay(n));
end
handles.hPatternsDisplay = [];
set(handles.imageSize,'enable','on');
handles.W = [];
guidata(hObject, handles);

function imageSize_Callback(hObject, eventdata, handles)

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

% --- Executes during object creation, after setting all properties.


function imageSize_CreateFcn(hObject, eventdata, handles)
% hObject handle to imageSize (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end

% --- Executes on button press in loadIm.


function loadIm_Callback(hObject, eventdata, handles)
[fName dirName] = uigetfile('*.bmp;*.tif;*.jpg;*.tiff');
if fName
set(handles.imageSize,'enable','off');
cd(dirName);
im = imread(fName);
N = str2num(get(handles.imageSize,'string'));
im = fixImage(im,N);
imagesc(im,'Parent',handles.neurons);
colormap('gray');
end

% --- Executes on button press in train.


function train_Callback(hObject, eventdata, handles)

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;

% Placing the new pattern in the figure...


xStart = 0.01;
xEnd = 0.99;
height = 0.65;
width = 0.09;
xLength = xEnd-xStart;
xStep = xLength/10;
offset = 4-ceil(Npattern/2);
offset = max(offset,0);
y = 0.1;

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);

% --- Executes on button press in addNoise.


function addNoise_Callback(hObject, eventdata, handles)
im = getimage(handles.neurons);
% N = get(handles.imageSize,'string');
% N = floor(str2num(N)/2)+1;
noisePercent = get( handles.noiseAmount, 'value' );
N = round( length(im(:))* noisePercent );
N = max(N,1); %minimum change one neuron

37
ind = ceil(rand(N,1)*length(im(:)));
% im(ind) = -1*im(ind); %!!!!
im(ind) = ~im(ind);
imagesc(im,'Parent',handles.neurons);
colormap('gray');

% --- Executes on button press in run.


function run_Callback(hObject, eventdata, handles)
im = getimage(handles.neurons);
[rows cols] = size(im);
if rows ~= cols
msgbox('I don''t support non square images','error');
return;
end
N = rows;
W = handles.W;
if isempty(W)
msgbox('No train data - doing nothing!','error');
return;
end
%figure; imagesc(W)
mat = repmat(im,N,N);
mat = mat.*W;
mat = im2col(mat,[N,N],'distinct');
networkResult = sum(mat);
networkResult = reshape(networkResult,N,N);
im = fixImage(networkResult,N);
imagesc(im,'Parent',handles.neurons);

% hObject handle to run (see GCBO)


% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

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

% --- Executes on slider movement.


function noiseAmount_Callback(hObject, eventdata, handles)
% hObject handle to noiseAmount (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
percent = get(hObject,'value');
percent = round(percent*100);
set(handles.noisePercent,'string',num2str(percent));

38
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range
of slider

% --- Executes during object creation, after setting all properties.


function noiseAmount_CreateFcn(hObject, eventdata, handles)
% hObject handle to noiseAmount (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: slider controls usually have a light gray background, change


% 'usewhitebg' to 0 to use default. See ISPC and COMPUTER.
usewhitebg = 1;
if usewhitebg
set(hObject,'BackgroundColor',[.9 .9 .9]);
else

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.

1. Membentuk Jaringan Kompetitif :


Jaringan Kohonen dapat dibentuk dari perintah :
net = newlvq(PR, S1, PC, LR, LF)

2. Program Jaringan LVQ dengan M-File/ Script :


 Program :
function LVQ
p = [ -3 -1 -1 -2 0 1 1 -1 0 2 ; 1 0 -1 -2 1 -3 -3 0 0 -
1];
tc = [ 1 1 1 2 2 1 1 1 1 1];
colormap(hsv);
plotvec(p,tc)
title('input vectors');
xlabel('p(1)');
ylabel('p(2)');

T = ind2vec(tc);
targets = full(T);

net = newlvq(minmax(p), 4, [.6 .4]);


net.IW(1,1)
hold on

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 :

Lakukan pengklasifikasian terhadap 25 vektor input, serta buatlah target masing-masing


inputan. Tampilkan bobot akhir yang diperoleh serta output jaringan. Berikanlah
kesimpulan apakah pengklasifikasian sudah sesuai dengan yang diharapkan.

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

Kusumadewi, S. 2004. Membangun Jaringan Syaraf Tiruan (Menggunakan MATLAB


& Excel Link). Yogyakarta : Penerbit Graha Ilmu

Demuth, H. & Beale, M. 2009. Neural Network Toolbox For Use With MATLAB
User’s Guide, Natick: The MathWokrs Inc.

42
LAMPIRAN

FORMAT LAPORAN PRAKTIKUM

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.

4. Pengumpulan Laporan Praktikum :


Laporan Praktikum dikumpulkan dalam bentuk soft copy paling lama 1 minggu
setelah praktikum.
E-mail : nurul@staff.uma.ac.id

Subject : Kelompok 1 - Laporan Praktikum JST Modul 1

Attachment : Laporan (PDF) dan file matlab ( .m)

44

Anda mungkin juga menyukai