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

34589 بازدید

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

  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

 

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

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

 


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

مطالب مرتبط

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

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

نشانی ایمیل منتشر نخواهد شد

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

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

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

  2. پاسخ
    Amar 22 اسفند 1392 در 11:57 ق.ظ
  3. سلام
    با تشکر از پاسخ شما
    متاسفانه لینک مورد نظر در دسترس نمی باشد

  4. پاسخ
      مدیریت 22 اسفند 1392 در 3:42 ب.ظ
    • سلام
      از ف*ل*ت*ر*ش*ک*ن استفاده کنید.

    • پاسخ
    uzdl 28 تیر 1393 در 5:20 ق.ظ
  5. سلام
    آقا چیکار کنیم که تحریم هستیم و نمیشه اسایت MAthwork عضو شد و استفاده کرد 🙁

  6. پاسخ
      مدیریت 29 تیر 1393 در 6:24 ق.ظ
    • از درگاه های عبوری استفاده کنید! 🙂

    • پاسخ
    hossein behzadi 2 مرداد 1393 در 2:14 ب.ظ
  7. 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

  8. پاسخ
      مدیریت 2 مرداد 1393 در 9:23 ب.ظ
    • صلام
      لطفا فارسی تایپ کنید.
      باید از مقالات استفاده کنید. معمولا در بعضی مقالات در این مورد اطلاعاتی پیدا میشه.

    • پاسخ
        hossein 3 مرداد 1393 در 6:07 ق.ظ
      • من همه مقالاتو خوندم
        اصن دیتا نیست که من شبکه رو بسازم
        مرسی

      • پاسخ
          مدیریت 3 مرداد 1393 در 8:23 ب.ظ
        • در این صورت پیشنهاد میشه به انجمن ها مراجعه کنید و مشکلتون رو اونجا مطرح کنید.

    fariba 19 فروردین 1394 در 4:51 ق.ظ
  9. با سلام
    لیطنک مربوط به پرسپترون چندلایه توسط فیلترشکن هم باز نمیشه
    لطفا اگر امکانش هست مطالب مربوطه را به ایمیل من ارسال کنید
    با تشکر

  10. پاسخ
      مدیریت 19 فروردین 1394 در 7:26 ب.ظ
    • سلام
      لینکس رو بفرستین بررسی کنیم.

    • پاسخ
    fariba 20 فروردین 1394 در 12:47 ق.ظ
  11. پاسخ
      مدیریت 20 فروردین 1394 در 9:25 ق.ظ
    • متاسفانه این تولباکس از روی سایت اصلی حذف شده است.
      This document you requested has moved permanently.
      از تولباکس های جدید در این زمینه استفاده کنید.

    • پاسخ
    fariba 29 فروردین 1394 در 5:31 ق.ظ
  12. با سلام
    میشه لطفا مسیر شبکه عصبی پرسپترون چندلایه در متلب را بگین من در سایتهای مختلف مسیر nftool هم دیدم میشه این کار را انجام داد

  13. پاسخ
      مدیریت 31 فروردین 1394 در 8:07 ق.ظ
    • کد یا مثال میخواین؟

    • پاسخ
    fariba 31 فروردین 1394 در 10:55 ق.ظ
  14. مثال
    من با متلب زیاد کار نکردم خصوصا کدنویسی اصلا چیزی نمیدونم
    پایان نامه من 18 متغیر مستقل و 2 متغیر وابسته است که با اتفاده از شبکه پرسپترون چندلایه باید بین مقادیر واقعی و پیش بینی متغیر وابسته رابطه برقرار شود و حساسیت دو متغیر وابسته نسبت به متغیرهای مستقل نیز با استفاده از آنالیز حساسیت انجام شود، حالا نمیدونم چططور این مسئله رو حل کنم
    خواهشمندم راهنماییم کنید
    با تشکر

  15. پاسخ
      مدیریت 3 اردیبهشت 1394 در 10:03 ق.ظ
    • در حال پیگیری درخواست شما می باشیم.

    • پاسخ
    fariba 3 اردیبهشت 1394 در 4:26 ق.ظ
  16. سلام ببخشید شاید داده های نرمال بتوانند کمک کنند
    دو Y برای دو مدل شبکه با 18 متغیر مستقل برای هر شبکه به ایمیل شما ارسال می شود
    تشکر

  17. پاسخ
      مدیریت 3 اردیبهشت 1394 در 9:52 ق.ظ
    • در حال بررسی هست

    • پاسخ
    saeede 26 خرداد 1394 در 8:20 ق.ظ
  18. سلام ببخشید من میخوام شبکه عصبی رو در متلب پیاده سازی کنم که کارنامه تعدادی دانشجو رو در یافت کنه و پیش بینی کنه که این دانشجو در ترم آینده چه درس هایی رو اخذ میکنه.ممنون میشم راهنمایی کنید

  19. پاسخ
      مدیریت 27 خرداد 1394 در 6:39 ب.ظ
    • سلام
      پروژه های اماده رو ببینین
      چنین چیزی نداریم کمکتون کنیم 🙂

    • پاسخ
    امیر حسین 11 تیر 1394 در 3:40 ب.ظ
  20. سلام
    یک سوال
    بعد از پیاده سازی شبکه عصبی و گرفتن خروجی چند مدل خروجی میده حالا اگر بخوایم این خروجی رو با فیلتر کالمن فیلتر کنیم و دوباره بعنوان ورودی استفاده کنیم باید چه کنیم؟

  21. پاسخ
    تینا 6 مرداد 1394 در 8:53 ب.ظ
  22. سلام
    پروژه من کنترل دور موتور القایی با شبکه عصبی ست. من ابتدا موتور القایی را در سیمولینک پیاده کردم و بعد سرعت را با روش برداری غیر مسقیم کنترل کردم حالا باید به جای کنترلر حالت قبل از شبکه عصب استفاده کنم ابتدا ازبلوک های اماده سیمولینک استفاده کردم ولی فک کنم نحوه ی train کردنش مشکل داره تعداد لایه ها ونرون ها را دارم ولی کبا کدنویسی اشنا نیستم ونمی تونم با روش کد شبکه عصبی را تولید کنم.. اگه میشه با یکی از این راه ها منو راهنمایی کنید.

  23. پاسخ
      مدیریت 8 مرداد 1394 در 10:14 ب.ظ
    • سلام
      سوالتون خیلی کلی هست…
      اینطور که خودتون گفتین، اگر شبکه عصبی رو مطالعه کنین مشکلتون حل میشه

    • پاسخ
    m.p 3 بهمن 1394 در 5:22 ب.ظ
  24. با سلام خدمت شما
    من نیاز شدید و ضروری به “کد آنالیز حساسیت شبکه عصبی در متلب” دارم.
    اگه امکانش هست ممنون میشم کمکم کنید
    با سپاس فراوان از زحمات شما

  25. پاسخ
      مدیریت 8 بهمن 1394 در 11:42 ق.ظ
    • به چه منظور؟

    • پاسخ
        m.p 8 بهمن 1394 در 1:26 ب.ظ
      • من میخوام بعد از اینکه شبکه عصبی من اجرا شد و بهترین حالت و از شبکه آموزش داده شده پیدا کردم. بعد از آن بفهمم در این شبکه کدوم پارامترها بیشترین حساسیت و روی شبکه داشتند.

      • پاسخ
    na 19 بهمن 1394 در 9:54 ق.ظ
  26. سلام
    من شبکه عصبی رو تولید کردم که چهار ورودی و یک خروجی داره. چطور میتونم با دادن ورودی های مختلف خروجی دریافت کنم؟

  27. پاسخ
      مدیریت 19 بهمن 1394 در 6:35 ب.ظ
    • از طریق فرم تماس با ما اقدام نمایید.

    • پاسخ
    سارا 7 تیر 1395 در 6:58 ق.ظ
  28. سلام نرمالیزه کردن داده ها براساس یه تابع مثل تابع هزینه در الگوریتم استعماری چطوریه؟

  29. پاسخ
    m.a 12 مرداد 1395 در 1:36 ب.ظ
  30. با سلام .
    پروژه من 11 داده ورودی و یک خروجی داره.میخوام آنالیز حساسیت آنجام بدم و ببینم شبکه پرسپترون چند لایه با کدوم ورودی ها جواب بهتری می ده. مراحل انجام رو اگه برام بفرستید ممنون میشم.

  31. پاسخ
    zahra 5 شهریور 1395 در 10:05 ب.ظ
  32. سلام.پایان نامه من پیش بینی بیماران کلیوی با پرسترون هستش.دیتاست من ۲۵ تا attribut و ۴۰۰ تا نمونه داره.الان باید چیکار کنم؟ هیچی راجع ب شبکه عصبی نمیدونم.اگه میشه کمکم کنین ممنون

  33. پاسخ
      مدیریت 8 شهریور 1395 در 10:03 ق.ظ
    • باسلام

      از طریق فرم تماس با ما اقدام نمایید.

    • پاسخ
    sara 26 آبان 1395 در 8:19 ق.ظ
  34. سلام پروژه من در مورد تشخیص حالت چهره هستش می خواستم ببینم می تونم با همین روش های گرافیکی و gui انجامش بدم یا باید با کد نویسی کار کنم حتما؟
    ممنون

  35. پاسخ
      مدیریت 26 آبان 1395 در 8:53 ق.ظ
    • میتونین کمک بگیرین

    • پاسخ
    هادی 12 آذر 1395 در 10:19 ق.ظ
  36. با سلام و احترام
    شرمنده من آموزش رو میدونم الان 70 به 30 واسه آموزش و تست داده ها رو جدا کردم
    تست شبکه چه جوریه؟ ممنونم

  37. پاسخ
    nikta 3 اردیبهشت 1396 در 11:23 ق.ظ
  38. 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

  39. پاسخ
      مدیریت 5 اردیبهشت 1396 در 8:01 ق.ظ
    • فارسی تایپ کنید

    • پاسخ
    kian 11 مرداد 1396 در 11:24 ق.ظ
  40. من میخوام با یادگیری عمیق روی یک دیتاست مشخص، رفتار بعدی کاربرا تو یک شبکه اجتماعی کوچک رو پیش بینی کنم. میتونید راهنمایی کنید؟

  41. پاسخ
    mirzaei 17 دی 1396 در 1:16 ب.ظ
  42. سلام خدا قوت به شما عزیزان
    میخواستم ببینم در مورد تشخیص fault پروژه ای خدمتتون نیس ؟
    هر سیستمی باشه پزشکی یا مهندسی برق . فقط مهم اینه ک تشخیص fault رو انجام بده داخلش .

  43. پاسخ

0

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

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

0 0

همکاران ما

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