Artificial Intelligence - هوش مصنوعی  
انجمن را در گوگل محبوب کنيد :

بازگشت   Artificial Intelligence - هوش مصنوعی > محاسبات نرم > شبکه های عصبی (Neural Networks)


 
تبليغات سايت
Iranian Association for the Advancement of Artificial Intelligence
ارسال تاپيک جديد  پاسخ
 
LinkBack ابزارهاي تاپيک نحوه نمايش
قديمي ۰۲-۱۲-۱۳۹۳, ۰۳:۳۵ بعد از ظهر   #1 (لینک دائم)
عضو جدید
 
آواتار xoncegame
 
تاريخ عضويت: ارديبهشت ۱۳۹۳
پست ها: 1
تشكرها: 0
0 تشكر در 0 پست
پيش فرض تحلیل یک برنامه متلب که برای شبکه عصبی پرسپترون نوشته شده

سلام دوستان.
متاسفانه آشنایی با شبکه های عصبی (مخابرات) ندارم. یه برنامه هست که یکی از دوستان نوشته اما همه قسمت هاشو نفهمیدم . اگه امکانش هست قسمت های design و test و Ml Algorithm رو توضیح بدید، گمونم بدرد دوستان دیگه هم بخوره
عنوان شبیه سازی اینه :
هدف از این شبیه سازي تشخیص دو کلاس شامل الگوهاي تصادفی با توزیع گوسی با استفاده از شبکه عصبی چند لایه پرسپترون با قاعده یادگیري پس انتشار خطا است.
m1 = [0,0] , variance= 1 کلاس اول
m2 = [2,0] , variance = 4 کلاس دوم
m همون میانگین هست .
500 الگوي آموزشی ( 250 لگو از هر کلاس ) و 500 الگوي آزمایشی ( 250 الگو از هر کلاس ) تولیدکنید. در صد طبقه بندي صحیح را در شرایط مختلف مورد بررسی قرار دهید
-1 شبکه عصبی با یک لایه پنهان و تعداد نرون هاي مختلف در لایه پنهان با یک ضریب یادگیري و ضریب ممان صفر و تعداد دوره یادگیري یکسان
-2 شبکه عصبی با یک لایه پنهان 10 نر ون در لایه پنهان با یک ضریب یادگیري و ضریب ممان صفر و تعداد دوره یادگیري مختلف
-3 شبکه عصبی با یک لایه پنهان و 10 نرون در لایه پنهان با ضریب یادگیري مختلف و ضریب ممان صفر
4 شبکه عصبی با یک لایه پنهان و 10 نرون در لایه پنهان با یک ضریب یادگیري و ضریب ممانهاي مختلف
5-شبکه عصبی با دو لایه پنهان، هر یک با 10 نرون با یک ضریب یادگیري و ضریب ممان صفرانجام دهید.
-6 شبکه عصبی با مشخصات حالت دوم را با قاعده یادگیري delta-delta انجام دهید.
-7 همچنین این الگوها را با استفاده از روش Maximum-likelihood Classifier طبقه بندي کنید
و رسم منحی برای حالت های 2 و 3 و 4


حالا اینم برنامه ای که یکی از همکلاسیا نوشته :
كد:
clc,clear all;close all;
mu1 = [0 0]';
sigma1 = 1;
mu2 = [2 0]';
sigma2 = 2;
Num_Input=500;
Ro = 2;          %Row
Cl = Num_Input;  %Coulmn
Num_Epoch =100;  %Num of Epochs
mu1 = repmat(mu1,[1 Cl]);
mu2 = repmat(mu2,[1 Cl]);
class1 = normrnd(mu1,sigma1,Ro,Cl);
class2 = normrnd(mu2,sigma2,Ro,Cl);


% fclose(fid1);fclose(fid2);
if(1)
    figure;
    plot(class1(1,:),class1(2,:),'o');
    figure;
    plot(class2(1,:),class2(2,:),'r*');
    figure;
    plot(class1(1,:),class1(2,:),'o');hold on;
    plot(class2(1,:),class2(2,:),'r*');
    axis([-4 10 -6 6]);
end
%% ==============   Design   ================
Input1 = [ones(1,floor(Num_Input/2))*-1;class1(1:floor(Num_Input/2))];
Num_Neuron = 10;
WL1 = 0.1 * rand(3,Num_Neuron)-.05;
WL2 = 0.1 * rand(Num_Neuron,1)-.05;
D=[0,1];      % for Phi=1/1+exp(-V)
Eta = 0.6;    % Rate of Learning
Alpha=0.2;    % Momentom
Del_wl2=0.1 * rand(Num_Neuron,1)-0.05;
Del_wl1=0.1 * rand(Num_Neuron,3)-0.05;
d1=zeros(1,floor(Num_Input/2));d2=zeros(1,floor(Num_Input/2))+1;
data = [ones(1,Num_Input)*-1;class1(:,1:floor(Num_Input/2)),class2(:,1:floor(Num_Input/2));d1,d2];
Learning_Curve = zeros(Num_Epoch,1);
h = waitbar(0,'Please wait...');
for Epoch=1:Num_Epoch
    NN = round(Epoch/Num_Epoch*100);
    waitbar(NN/100);
    Index = randperm(Num_Input);
    Ave_Err=0;
    for i=1:Num_Input
        Idx = Index(i);
        % ======  Forward  =========
        V1 =  WL1' * data(1:3,Idx);
        Y1=Phi(V1);
        V2 =  WL2' * Y1;
        Y2=Phi(V2);
        e=data(4,Idx)-Y2;
        Ave_Err = Ave_Err + e^2;

        % ======= Back ward ===========
        Grad1 = e*Y2.*(1-Y2);
        Del_wl2=Alpha*Del_wl2+Eta*Grad1*Y1;
        WL2=WL2+Del_wl2;

        Grad2 = Grad1*WL2.*Y1.*(1-Y1);
        Del_wl1=Alpha*Del_wl1+Eta*Grad2*data(1:3,Idx)';
        WL1=WL1+Del_wl1';
    end
    Learning_Curve(Epoch) = Ave_Err/Num_Input;
end
close(h) 
MSE = sum(Learning_Curve)/Num_Epoch
figure(1);
plot(1:Num_Epoch,Learning_Curve)
hold on; grid on;
xlabel('Number of Epochs')
ylabel('MSE over Epoch')

%%  =========================  Test  ============================
Test_Input = [ones(1,Num_Input)*-1;class1(:,floor(Num_Input/2)+1:Num_Input),class2(:,floor(Num_Input/2)+1:Num_Input);d1,d2];

Error = 0;
for i=1:Num_Input
    % ======  Forward  =========
    V1 =  WL1' * Test_Input(1:3,i);
    Y1=Phi(V1);
    V2 =  WL2' * Y1;
    Y2=Phi(V2);
    e=abs(Test_Input(4,i)-Y2);
    if(e>0.5)
        Error = Error+1;
    end

end
Ec = (Num_Input-Error)/Num_Input*100

%% = ================  Ml Algorithm  =================
mu1 = [0 0]';
sigma1 = 1;
mu2 = [2 0]';
sigma2 = 2;
r = sqrt(sigma1^2*sigma2^2*(norm(mu1+mu2)^2/(sigma2^2-sigma1^2) + 4*log(sigma2/sigma1))/(sigma2^2-sigma1^2) );
Xc = (sigma2^2*mu1 - sigma1^2*mu2)/(sigma2-sigma1);
Err_ML=0;
for i=1:Num_Input
    if( norm(Test_Input([2 3],i) - Xc )>r ) % Select Class 2
        if(Test_Input(4,i) ==  0)
            Err_ML=Err_ML+1;
        end
    else  % Select Class 1
        if(Test_Input(4,i) ==  1)
            Err_ML=Err_ML+1;
        end
    end
end
Ec_ML = (Num_Input-Err_ML) /Num_Input*100

برای اجرا باید یه m-file کنار برنامه داشته باشین به اسم Phi که برنامش اینه :

كد:
function [Y]= Phi(V)
Y = 1 ./ ( 1 + exp(-V) );
% a = 1.7;
% b = 2/3;
% Y = a * tanh( b * V);
xoncegame آفلاين است   پاسخ با نقل قول

  #ADS
نشان دهنده تبلیغات
تبليغگر
 
 
 
تاريخ عضويت: -
محل سكونت: -
سن: 2010
پست ها: -
 

نشان دهنده تبلیغات is online  
پاسخ



كاربران در حال ديدن تاپيک: 1 (0 عضو و 1 مهمان)
 

قوانين ارسال
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is فعال
شکلکها فعال است
كد [IMG] فعال است
كدهاي HTML غير فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال




زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۵:۰۹ بعد از ظهر ميباشد.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.

Teach and Learn at Hexib | Sponsored by www.Syavash.com and Product In Review

استفاده از مطالب انجمن در سایر سایت ها، تنها با ذکر انجمن هوش مصنوعي به عنوان منبع و لینک مستقیم به خود مطلب مجاز است

Inactive Reminders By Icora Web Design