شبكه های عصبی در MATLAB

به طور كلی در نرم‌ افزار MATLAB به 3 روش می‌ توان شبكه‌های عصبی ایجاد كرد:

 

  1. كدنویسی
  2. استفاده از سیستم‌های بلوكی (Simulink)
  3. استفاده از محیط گرافیكی (GUI)

 

در این مقاله قصد دارم نحوه‌ی استفاده از GUI در جعبه‌ابزار شبكه عصبی را به دوستان معرفی كنم البته به دوستان توصیه می‌كنم كه ابتدا با كدنویسی آشنا شوند زیرا ممكن است درجایی مجبور به نوشتن كد باشند مگر كسانی كه شبكه عصبی، درس تخصصی آنها نبوده و فقط برای انجام قسمتی از پروژه‌شان می‌خواهند از شبكه‌های عصبی استفاده كنند كه استفاده از GUI در این مورد بسیار ساده و سریع است.

 

برای شروع nntool را در خط فرمان تایپ و اینتر كنید و یا از مسیر Start >> Toolboxes >> Neural Network >> Neural Network Tool استفاده كنید پنجره‌ای مانند شكل زیر مشاهده می‌كنید:

 


 
 

 

برای ایجاد یك شبكه جدید، روی دگمه New كلیك كنید همان‌طور كه مشاهده می‌شود، ‌پنجره‌ای باز می‌شود كه می‌توانید در آن پارامترهای شبكه‌ی مورد نظرتان را وارد كنید:

 

 


 

 

در تب Network شما می‌توانید تنظیمات مربوط به شبكه عصبی مورد نظرتان را وارد كنید و در زبانه دوم یعنی Data شما داده‌های خود را وارد می‌كنید. حالا برای مثال اول می‌خواهیم با یك تك پرسپترون، گیت NAND دو ورودی را پیاده‌سازی كنیم ابتدا نام شبكه مورد نظر را در قسمت Name وارد كنید من نام NAND را وارد می‌كنم سپس در قسمت Network Type نوع شبكه را Perceptron انتخاب كنید پس از آن به تب Data رفته و در قسمت Name نام p و در قسمت Value مقدار [1 0 1 0;1 1 0 0] و در Data Type حالت Inputs را انتخاب كرده و به روی Create كلیك كنید دیالوگی مبنی بر ذخیره دیتا مشاهده می‌‌كنید آن را Ok كنید سپس برای ذخیره‌ی داده‌های تارگت مشابه حالت قبل عمل كنید یعنی در قسمت Name نام t و در قسمت Value مقدار [0 1 1 1] و در Data Type حالت Targets را انتخاب كرده و به روی Create كلیك كنید دیالوگ مشاهده شده را Ok كنید. به تب Network بازگشته و داده‌های ورودی و تارگت را از منوی مقابلشان انتخاب كنید برای دیدن ساختار شبكه، بر دگمه View كلیك كنید بصورت زیر:

 

 


 

 

همان‌طور كه می‌بینید از تابع محدود كننده سخت نامتقارن استفاده كرده‌ایم تا خروجی‌های ما صفر یا یك شوند حالا برای ایجاد شبكه، Create را كلیك، و دیالوگ پس از آن را Ok كنید به پنجره اصلی بازگشته و در قسمت Networks به روی NAND كلیك كرده و Open را بزنید در پنجره باز شده به تب Train رفته و مقادیر ورودی و تارگت را وارد كرده و برای شروع آموزش Train Network را بفشارید همان‌طور كه مشاهده می‌كنید به پرفورمانس صفر رسیده‌ایم(اتفاقی كه در هیچكدام از مسائل واقعی كه ما با آن سروكار داریم، هرگز رخ نخواهد داد!) كه دلیلش را هم احتمالا می‌دانید حال به پنجره اصلی بازگشته و مقادیر خروجی و خطا را به ازای داده‌های آموزشی مشاهده كنید كه البته از پرفورمانس صفر می‌توان حدس زد كه چه مقادیری به دست آمده است.

اكنون اگر بوسیله‌ی همین روش تابع XOR را پیاده‌سازی كنید نتایج وحشتناكی خواهید گرفت.

برای مثال دوم می‌خواهیم تابع سینوس را بوسیله‌ی یك شبكه عصبی MLP ، تقریب بزنیم برای این منظور در پنجره مدیریت شبكه و دیتا، New را كلیك  كرده و مانند شكل زیر عمل  كنید:

 

 


 

 

شبكه را دو لایه قرار داده‌ایم كه در لایه اول ده نرون با تابع تبدیل تانژانت سیگموئید و لایه دوم كه همان لایه خروجی است را تابع تبدیل خطی داده‌ایم (نرون‌های لایه خروجی برابر تعداد خروجی‌های شبكه می‌باشد كه در این مثال برابر یك است.)

در اینجا دیگر نمی‌ توانید از روش قبل برای ایجاد داده‌های خود استفاده كنید و باید دیتا را یا از یك فایل mat بگیرید و یا از فضای كاری متلب. دستورات زیر را در خط فرمان تایپ و اینتر كنید:

 

;p=0:0.1:4*pi

;(t=sin(p

 

به پنجره‌ی اصلی بازگشته و Import را كلیك كنید سپس داده‌های p و t را به ترتیب عنوان داده‌های ورودی و تارگت، Import كرده و سپس Close كنید.

 

حال به پنجره‌ی تنظیمات بازگشته و داده‌های ورودی و تارگت را وارد كرده و شبكه را ایجاد كنید. شبكه‌ای را كه با نام Sin ذخیره كرده‌اید، باز كنید و به تب Train بروید و پس از وارد كردن داده‌های ورودی و تارگت، به تب Training Parameters بروید همانطور كه ملاحظه می‌كنید در اینجا می‌توانید پارامترهای زیادی را تغییر دهید مثلا ممكن است در مساله‌ای خاص، پرفورمانسی برابر 0.001 كافی باشد كه می‌توانید در قسمت goal آن عدد را وارد كنید و نیز تنظیمات دیگری از جمله زمان، تعداد مراحل آموزش و …

 
 

 


 

 

مقادیر را پیش‌فرض قرار داده و شبكه را آموزش دهید:

 

 


 
 

 

اگر به مقادیری غیر از آنچه در بالا آمده، رسیده‌اید، تعجب نكنید.

 

در تب View/Edit Weights می‌توانید تمام وزن‌ها و بایاس‌ها را مشاهده كنید به پنجره‌ی اصلی بازگردید و Export را كلیك كرده و شبكه و نیز داده‌های خروجی و خطا را به فضای كاری متلب انتقال دهید و كدهای زیر را اجرا كنید:

 

 

(subplot(2,1,1

;(y1=sim(Sin,p

(‘plot(p,t,p,y1,’m

;([xlim([0 4*pi]);ylim([-1 1

;(‘(title(‘Network Output (Training Data

(subplot(2,1,2

;x=0:0.001:4*pi

;(y2=sim(Sin,x

(‘plot(x,sin(x),x,y2,’m

;([xlim([0 4*pi]);ylim([-1 1

;(‘(title(‘Network Output (Test Data

 

 

همان‌طوری كه مشاهده می‌شود شبكه با ده نرون به خوبی آموزش دیده و برای داده‌های تست نیز خروجی مناسبی داریم.

(توجه كنید كه در شكل، منحنی‌های خروجی و تارگت روی هم افتاده‌اند)

 

 


 
 

 

نكته: توجه كنید كه تابع سینوس یكی از ساده‌ترین توابع است و آن را می‌توانید با تعداد نرون‌های كمتری (حتی دو سه نرون) با تقریب نسبتا خوبی پیاده‌سازی كنید. درواقع بسته به خودتان است كه چه میزان دقت مورد نیاز شماست. یكی از توابع سخت برای پیاده‌سازی، تابع مربعی می‌باشد كه دلیل آن تغییرات شدید در لبه‌های بالارونده و پائین‌رونده‌ی آن است به عبارتی دیگر اگر شما می‌خواهید دو تابع سینوسی و مربعی را با دقت یكسانی تقریب بزنید، شما مجبور هستید تا شبكه‌ی بزرگتری را برای تابع مربعی درنظر بگیرید این تابع را خودتان پیاده‌سازی كنید تا درك بهتری از شبكه عصبی داشته باشید.

 

مطالب مرتبط

دیدگاهتان را بنویسید

بخش های مورد نیاز علامت گذاری شده اند نشانی ایمیل منتشر نخواهد شد

نویسنده : آدرس سایت : ایمیل :

تعداد 42 دیدگاه برای نوشته " شبكه های عصبی در MATLAB" ارسال شده است .

  1. Amar گفت:

    با سلام
    چطوری میشه تعداد ورودی ها و خروجی ها رو به صورت دلخواه تنظیم کرد؟ الان شما فقط دو تا ورودی بهش دادین. من مثلا میخام یک پرسپترون چند لایه با 9 ورودی، 2 خروجی و 2 لایه پنهان که لایه پنهان اول 8 نرون و لایه پنهان دوم 2 نرون داشته باشه استفاده کنم
    9-8-2-2
    ممنون میشم راهنمایی کنید

  2. Amar گفت:

    سلام
    با تشکر از پاسخ شما
    متاسفانه لینک مورد نظر در دسترس نمی باشد

  3. uzdl گفت:

    سلام
    آقا چیکار کنیم که تحریم هستیم و نمیشه اسایت MAthwork عضو شد و استفاده کرد 🙁

  4. hossein behzadi گفت:

    salam,projhe man rajebe pishbini nasht khate lole nafte ba estefade az shabakehaye asabi,mikham bedonam vaghean data az koja peida konam k shabake asabio parvaresh va test konam?mamnon misham javabo vasam email ham konid mersi

  5. fariba گفت:

    با سلام
    لیطنک مربوط به پرسپترون چندلایه توسط فیلترشکن هم باز نمیشه
    لطفا اگر امکانش هست مطالب مربوطه را به ایمیل من ارسال کنید
    با تشکر

    • مدیریت گفت:

      متاسفانه این تولباکس از روی سایت اصلی حذف شده است.
      This document you requested has moved permanently.
      از تولباکس های جدید در این زمینه استفاده کنید.

  6. fariba گفت:

    با سلام
    میشه لطفا مسیر شبکه عصبی پرسپترون چندلایه در متلب را بگین من در سایتهای مختلف مسیر nftool هم دیدم میشه این کار را انجام داد

  7. fariba گفت:

    مثال
    من با متلب زیاد کار نکردم خصوصا کدنویسی اصلا چیزی نمیدونم
    پایان نامه من 18 متغیر مستقل و 2 متغیر وابسته است که با اتفاده از شبکه پرسپترون چندلایه باید بین مقادیر واقعی و پیش بینی متغیر وابسته رابطه برقرار شود و حساسیت دو متغیر وابسته نسبت به متغیرهای مستقل نیز با استفاده از آنالیز حساسیت انجام شود، حالا نمیدونم چططور این مسئله رو حل کنم
    خواهشمندم راهنماییم کنید
    با تشکر

  8. fariba گفت:

    سلام ببخشید شاید داده های نرمال بتوانند کمک کنند
    دو Y برای دو مدل شبکه با 18 متغیر مستقل برای هر شبکه به ایمیل شما ارسال می شود
    تشکر

  9. saeede گفت:

    سلام ببخشید من میخوام شبکه عصبی رو در متلب پیاده سازی کنم که کارنامه تعدادی دانشجو رو در یافت کنه و پیش بینی کنه که این دانشجو در ترم آینده چه درس هایی رو اخذ میکنه.ممنون میشم راهنمایی کنید

  10. امیر حسین گفت:

    سلام
    یک سوال
    بعد از پیاده سازی شبکه عصبی و گرفتن خروجی چند مدل خروجی میده حالا اگر بخوایم این خروجی رو با فیلتر کالمن فیلتر کنیم و دوباره بعنوان ورودی استفاده کنیم باید چه کنیم؟

  11. تینا گفت:

    سلام
    پروژه من کنترل دور موتور القایی با شبکه عصبی ست. من ابتدا موتور القایی را در سیمولینک پیاده کردم و بعد سرعت را با روش برداری غیر مسقیم کنترل کردم حالا باید به جای کنترلر حالت قبل از شبکه عصب استفاده کنم ابتدا ازبلوک های اماده سیمولینک استفاده کردم ولی فک کنم نحوه ی train کردنش مشکل داره تعداد لایه ها ونرون ها را دارم ولی کبا کدنویسی اشنا نیستم ونمی تونم با روش کد شبکه عصبی را تولید کنم.. اگه میشه با یکی از این راه ها منو راهنمایی کنید.

  12. m.p گفت:

    با سلام خدمت شما
    من نیاز شدید و ضروری به “کد آنالیز حساسیت شبکه عصبی در متلب” دارم.
    اگه امکانش هست ممنون میشم کمکم کنید
    با سپاس فراوان از زحمات شما

  13. na گفت:

    سلام
    من شبکه عصبی رو تولید کردم که چهار ورودی و یک خروجی داره. چطور میتونم با دادن ورودی های مختلف خروجی دریافت کنم؟

  14. سارا گفت:

    سلام نرمالیزه کردن داده ها براساس یه تابع مثل تابع هزینه در الگوریتم استعماری چطوریه؟

  15. m.a گفت:

    با سلام .
    پروژه من 11 داده ورودی و یک خروجی داره.میخوام آنالیز حساسیت آنجام بدم و ببینم شبکه پرسپترون چند لایه با کدوم ورودی ها جواب بهتری می ده. مراحل انجام رو اگه برام بفرستید ممنون میشم.

  16. zahra گفت:

    سلام.پایان نامه من پیش بینی بیماران کلیوی با پرسترون هستش.دیتاست من ۲۵ تا attribut و ۴۰۰ تا نمونه داره.الان باید چیکار کنم؟ هیچی راجع ب شبکه عصبی نمیدونم.اگه میشه کمکم کنین ممنون

  17. sara گفت:

    سلام پروژه من در مورد تشخیص حالت چهره هستش می خواستم ببینم می تونم با همین روش های گرافیکی و gui انجامش بدم یا باید با کد نویسی کار کنم حتما؟
    ممنون

  18. هادی گفت:

    با سلام و احترام
    شرمنده من آموزش رو میدونم الان 70 به 30 واسه آموزش و تست داده ها رو جدا کردم
    تست شبکه چه جوریه؟ ممنونم

  19. nikta گفت:

    salam khaste nbashid man az tolbax shabke asabi nnfitting estfade kardam v javab geftam faghat khoroji khode shabke asabi nmitonam bebinam lotfan rahnmae bfrmaed mamnoon

  20. kian گفت:

    من میخوام با یادگیری عمیق روی یک دیتاست مشخص، رفتار بعدی کاربرا تو یک شبکه اجتماعی کوچک رو پیش بینی کنم. میتونید راهنمایی کنید؟

  21. mirzaei گفت:

    سلام خدا قوت به شما عزیزان
    میخواستم ببینم در مورد تشخیص fault پروژه ای خدمتتون نیس ؟
    هر سیستمی باشه پزشکی یا مهندسی برق . فقط مهم اینه ک تشخیص fault رو انجام بده داخلش .

  22. PornoGop گفت:

    Новинки порно видео без регистрации онлайн на https://porno-go.website в высоком качестве
    Горячее секс ролики для всех онлайн на http://porno-go.ru в HD720
    Безумное порно ролики для всех просмотр на http://porno-go.top в HD1080
    Чувственное секс видео для взрослых смотреть на http://porno-go.net в высоком качестве
    Семейное порно запись без границ просмотр на http://porno-go.mobi в HD720

    .


0

شبکه های اجتماعی

دانشنامه تخصصی مهندسی ایران را در شبکه های اجتماعی دنبال کنید

0 0

عضویت در خبرنامه

برای دریافت آخرین اخبار در زمینه مهندسی شامل نرم افزارها، استانداردها و آموزش ها به سامانه اطلاع رسانی ما بپیوندید.

بدون پرداخت هزینه، تا هر وقت بخواهید.

تست

همکاران ما

گروه مپنا
گروه مپنا
دانشگاه تهران
دانشگاه تهران
سایپا
سایپا
ایران خودرو
ایران خودرو
شرکت ملی نفت ایران
شرکت ملی نفت ایران
ذوب‌آهن اصفهان
ذوب‌آهن اصفهان
فولاد خوزستان
فولاد خوزستان
مشاوره
مشاوره

نیاز به مشاوره دارید؟

 
                    همکاران ما پاسخگو شما خواهند بود.