Post on 19-Jun-2020
MODUL PRAKTIKUM
JARINGAN SYARAF TIRUAN
Dosen Pengampu :
Nurul Khairina, S.Kom, M.Kom
PROGRAM STUDI S1 TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS MEDAN AREA
2019
1
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
2
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
3
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 :
4
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 :
5
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).
6
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
7
Contoh :
Perintah membentuk matriks A :
Hasil :
Perintah membentuk matriks C :
Hasil :
Perintah A + C :
Hasil :
Perintah A - C :
Hasil :
Perintah A * C :
8
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 :
9
c. Invers Matriks
Perintah :
Hasil :
Tugas :
Terdapat matriks X dan Y sebagai berikut :
𝑋 = [−1 23 0
] 𝑌 = [2 −25 7
]
Hitung :
a. X + Y
b. X - 2Y
c. X T
d. 2X + Y -1
10
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
11
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);
12
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 :
13
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 :
14
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 :
15
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º
16
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
17
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 :
18
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.
19
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];
20
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);
21
%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);
22
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.
23
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 :
24
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.
25
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 :
26
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 :
27
Hidden
Layer 1
Unit
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
Layer 2
Dari Hidden Layer 1
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
Output Dari Hidden Layer 2
z1 z2 z3 b
y1 0.3 0.8 -0.2 -1
28
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 :
29
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 :
30
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.
31
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 :
>> pos = randtop(5,6)
>> plotsom (pos)
a. Gridtop
b. Hextop
c. Randtop
32
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);
33
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.
34
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', []);
35
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)
36
% 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);
37
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
38
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));
39
% 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.
40
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')
41
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.
42
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.
43
LAMPIRAN
FORMAT LAPORAN PRAKTIKUM
1. Sampul :
2. Format Laporan :
Sampul
Kata Pengantar
Daftar Isi
Hasil Praktikum
Daftar Pustaka
44
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)