شبكه های عصبی در MATLAB
- 1392/05/27
- 41 دیدگاه
به طور كلی در نرم افزار MATLAB به 3 روش می توان شبكه های عصبی Neural Network ایجاد كرد:
- كدنویسی
- استفاده از سیستمهای بلوكی (Simulink)
- استفاده از محیط گرافیكی (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
همانطوری كه مشاهده میشود شبكه با ده نرون به خوبی آموزش دیده و برای دادههای تست نیز خروجی مناسبی داریم.
(توجه كنید كه در شكل، منحنیهای خروجی و تارگت روی هم افتادهاند)
نكته: توجه كنید كه تابع سینوس یكی از سادهترین توابع است و آن را میتوانید با تعداد نرونهای كمتری (حتی دو سه نرون) با تقریب نسبتا خوبی پیادهسازی كنید. درواقع بسته به خودتان است كه چه میزان دقت مورد نیاز شماست. یكی از توابع سخت برای پیادهسازی، تابع مربعی میباشد كه دلیل آن تغییرات شدید در لبههای بالارونده و پائینروندهی آن است به عبارتی دیگر اگر شما میخواهید دو تابع سینوسی و مربعی را با دقت یكسانی تقریب بزنید، شما مجبور هستید تا شبكهی بزرگتری را برای تابع مربعی درنظر بگیرید این تابع را خودتان پیادهسازی كنید تا درك بهتری از شبكه عصبی داشته باشید.
مطالب مرتبط
برچسب ها : Neural Network, nntool, Simulink, Simulink در متلب, آموزش Neural Network, آموزش پیشرفته Matlab, تولباکس شبکه عصبی در matlab, شبكه های عصبی, شبكه های عصبی در MATLAB
دیدگاهتان را بنویسید
نشانی ایمیل منتشر نخواهد شد
با سلام
چطوری میشه تعداد ورودی ها و خروجی ها رو به صورت دلخواه تنظیم کرد؟ الان شما فقط دو تا ورودی بهش دادین. من مثلا میخام یک پرسپترون چند لایه با 9 ورودی، 2 خروجی و 2 لایه پنهان که لایه پنهان اول 8 نرون و لایه پنهان دوم 2 نرون داشته باشه استفاده کنم
9-8-2-2
ممنون میشم راهنمایی کنید
سلام
توی لینک زیر کامل توضیح داده شده:
http://www.mathworks.com/help/toolbox/nnet/network.html#667825
سلام
با تشکر از پاسخ شما
متاسفانه لینک مورد نظر در دسترس نمی باشد
سلام
از ف*ل*ت*ر*ش*ک*ن استفاده کنید.
سلام
آقا چیکار کنیم که تحریم هستیم و نمیشه اسایت MAthwork عضو شد و استفاده کرد 🙁
از درگاه های عبوری استفاده کنید! 🙂
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
صلام
لطفا فارسی تایپ کنید.
باید از مقالات استفاده کنید. معمولا در بعضی مقالات در این مورد اطلاعاتی پیدا میشه.
من همه مقالاتو خوندم
اصن دیتا نیست که من شبکه رو بسازم
مرسی
در این صورت پیشنهاد میشه به انجمن ها مراجعه کنید و مشکلتون رو اونجا مطرح کنید.
با سلام
لیطنک مربوط به پرسپترون چندلایه توسط فیلترشکن هم باز نمیشه
لطفا اگر امکانش هست مطالب مربوطه را به ایمیل من ارسال کنید
با تشکر
سلام
لینکس رو بفرستین بررسی کنیم.
http://www.mathworks.com/help/toolbox/nnet/network.html#667825
متاسفانه این تولباکس از روی سایت اصلی حذف شده است.
This document you requested has moved permanently.
از تولباکس های جدید در این زمینه استفاده کنید.
با سلام
میشه لطفا مسیر شبکه عصبی پرسپترون چندلایه در متلب را بگین من در سایتهای مختلف مسیر nftool هم دیدم میشه این کار را انجام داد
کد یا مثال میخواین؟
مثال
من با متلب زیاد کار نکردم خصوصا کدنویسی اصلا چیزی نمیدونم
پایان نامه من 18 متغیر مستقل و 2 متغیر وابسته است که با اتفاده از شبکه پرسپترون چندلایه باید بین مقادیر واقعی و پیش بینی متغیر وابسته رابطه برقرار شود و حساسیت دو متغیر وابسته نسبت به متغیرهای مستقل نیز با استفاده از آنالیز حساسیت انجام شود، حالا نمیدونم چططور این مسئله رو حل کنم
خواهشمندم راهنماییم کنید
با تشکر
در حال پیگیری درخواست شما می باشیم.
سلام ببخشید شاید داده های نرمال بتوانند کمک کنند
دو Y برای دو مدل شبکه با 18 متغیر مستقل برای هر شبکه به ایمیل شما ارسال می شود
تشکر
در حال بررسی هست
سلام ببخشید من میخوام شبکه عصبی رو در متلب پیاده سازی کنم که کارنامه تعدادی دانشجو رو در یافت کنه و پیش بینی کنه که این دانشجو در ترم آینده چه درس هایی رو اخذ میکنه.ممنون میشم راهنمایی کنید
سلام
پروژه های اماده رو ببینین
چنین چیزی نداریم کمکتون کنیم 🙂
سلام
یک سوال
بعد از پیاده سازی شبکه عصبی و گرفتن خروجی چند مدل خروجی میده حالا اگر بخوایم این خروجی رو با فیلتر کالمن فیلتر کنیم و دوباره بعنوان ورودی استفاده کنیم باید چه کنیم؟
سلام
پروژه من کنترل دور موتور القایی با شبکه عصبی ست. من ابتدا موتور القایی را در سیمولینک پیاده کردم و بعد سرعت را با روش برداری غیر مسقیم کنترل کردم حالا باید به جای کنترلر حالت قبل از شبکه عصب استفاده کنم ابتدا ازبلوک های اماده سیمولینک استفاده کردم ولی فک کنم نحوه ی train کردنش مشکل داره تعداد لایه ها ونرون ها را دارم ولی کبا کدنویسی اشنا نیستم ونمی تونم با روش کد شبکه عصبی را تولید کنم.. اگه میشه با یکی از این راه ها منو راهنمایی کنید.
سلام
سوالتون خیلی کلی هست…
اینطور که خودتون گفتین، اگر شبکه عصبی رو مطالعه کنین مشکلتون حل میشه
با سلام خدمت شما
من نیاز شدید و ضروری به “کد آنالیز حساسیت شبکه عصبی در متلب” دارم.
اگه امکانش هست ممنون میشم کمکم کنید
با سپاس فراوان از زحمات شما
به چه منظور؟
من میخوام بعد از اینکه شبکه عصبی من اجرا شد و بهترین حالت و از شبکه آموزش داده شده پیدا کردم. بعد از آن بفهمم در این شبکه کدوم پارامترها بیشترین حساسیت و روی شبکه داشتند.
سلام
من شبکه عصبی رو تولید کردم که چهار ورودی و یک خروجی داره. چطور میتونم با دادن ورودی های مختلف خروجی دریافت کنم؟
از طریق فرم تماس با ما اقدام نمایید.
سلام نرمالیزه کردن داده ها براساس یه تابع مثل تابع هزینه در الگوریتم استعماری چطوریه؟
با سلام .
پروژه من 11 داده ورودی و یک خروجی داره.میخوام آنالیز حساسیت آنجام بدم و ببینم شبکه پرسپترون چند لایه با کدوم ورودی ها جواب بهتری می ده. مراحل انجام رو اگه برام بفرستید ممنون میشم.
سلام.پایان نامه من پیش بینی بیماران کلیوی با پرسترون هستش.دیتاست من ۲۵ تا attribut و ۴۰۰ تا نمونه داره.الان باید چیکار کنم؟ هیچی راجع ب شبکه عصبی نمیدونم.اگه میشه کمکم کنین ممنون
باسلام
از طریق فرم تماس با ما اقدام نمایید.
سلام پروژه من در مورد تشخیص حالت چهره هستش می خواستم ببینم می تونم با همین روش های گرافیکی و gui انجامش بدم یا باید با کد نویسی کار کنم حتما؟
ممنون
میتونین کمک بگیرین
با سلام و احترام
شرمنده من آموزش رو میدونم الان 70 به 30 واسه آموزش و تست داده ها رو جدا کردم
تست شبکه چه جوریه؟ ممنونم
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
فارسی تایپ کنید
من میخوام با یادگیری عمیق روی یک دیتاست مشخص، رفتار بعدی کاربرا تو یک شبکه اجتماعی کوچک رو پیش بینی کنم. میتونید راهنمایی کنید؟
سلام خدا قوت به شما عزیزان
میخواستم ببینم در مورد تشخیص fault پروژه ای خدمتتون نیس ؟
هر سیستمی باشه پزشکی یا مهندسی برق . فقط مهم اینه ک تشخیص fault رو انجام بده داخلش .
مطالب جدید
مطالب پربازدید
مطالب تصادفی
شبکه های اجتماعی
دانشنامه تخصصی مهندسی ایران را در شبکه های اجتماعی دنبال کنید
همکاران ما