%%% YSA demo 1

clc
clear all
close all

% Giriþ:
P = [0 1 2 3 4 5 6 7 8 9 10];
% Çýkýþ:
T = [0 1 2 3 4 3 2 1 2 3 4];

%%
% ileri yönlü çok katmanlý að tanýmlayalým:
% Giriþ ve çýkýþlar önce yazýlýr :)
% 5: gizli katmanda 5 neuron ve çýkýþta 1 neuron var.
% gizli katmandaki aktivasyon fonksiyonu tansig ve
%        çýkýþ katmanýndaki aktivasyon fonksiyonu purelin.
net = newff(P, T, 5,{'tansig' 'purelin'});

%%
% rasgele deðerlerle oluþturulmuþ aðýn girdilere vereceði cevabý bul
% ve ekrana çizdir:
Y = sim(net,P);
figure, plot(P,T,P,Y,'o')

%%
% adapt komutu: Artýrýmlý Ögrenme modu
%        Gradyanýn hesaplanarak agýrlýklarýn güncellenmesi islemi, 
%        her bir girdinin aga uygulanmasý ile gerçeklestirilir.
% train komutu: Grup Ögrenme modu
%        Aðýrlýklar, tüm egitim seti aða uygulandýgýnda gerçeklestirilir.
% Not: Epoch = iterasyon sayýsý 50 olsun (yani tüm örnekler 50þer defa
%        aða gösterilsin.
% Grup modu egitim yapalim:
net.trainParam.epochs = 50;
net = train(net,P,T);

% öðrenme tamamlandýktan sonraki aðýn girdilere vereceði cevabý bul
% ve ekrana çizdir:
Y = sim(net,P);
figure, plot(P,T,P,Y,'o')
