تعداد تکرارهای الگوریتم آموزش شبکه عصبی

e0l0h0a0m

عضو جدید
سلام
من دارم روی پروژه تشخیص چهره با استفاده از شبکه عصبی کار می کنم.شبکه انتخابی من پرسپترون 3لایه است.خواستم بدونم تعداد تکرارهای train رو بر چه اساسی باید انتخاب کنیم؟؟کسی میدونه؟؟
 

mahdis.

عضو جدید
کاربر ممتاز
سلام.میشه برام بگی الگوریتم شبکه عصبی چه طوری کار میکنه؟:smile:
 

e0l0h0a0m

عضو جدید
سلام.میشه برام بگی الگوریتم شبکه عصبی چه طوری کار میکنه؟:smile:

سلام.شبکه عصبی یه جور شبیه سازی مغز انسانه که با مثال یاد میگیره.میتونه یک لایه یا بیشتر داشته باشه.هر لایه تعدادی نرون و یک تابع انتقال داره که نرون ها مسئول انتقال اطلاعات به لایه های بعدی هستن.هر نرون وزن داره.شبکه عصبی یک قسمت آموزش (train) داره که حدود75-80درصد داده های ورودی برای آموزش شبکه استفاده می شه.و آموزش شبکه تا جایی ادامه پیدا می کنه که خطا کمتر از یک مقدار مشخص بشه.فرایند هر تکرار آموزش به این صورته که هر ورودی در مقدار وزن هر نرون ضرب میشه با یک مقدار بایاس جمع میشه و نتیجه به تابع انتقال اون لایه داده میشه و خروجی تابع به لایه بعدی میره و... .در تکرار بعدی مقدار وزن ها طوری اصلاح میشه که خطا رو کم کنه.
بعد از اتمام آموزش شبکه،حال باید شبکه با20-25 درصد داده های باقی مانده تست بشه که ببینیم عملکرد شبکه چقدر خوب بوده.
نمیدونم تونستم جواب سؤالتونوبدم؟!خیلی کلی پرسیدید.
 

hazrati62

عضو جدید
سلام
از چند روش میشه استفاده کرد، یکی تعداد epoch مشخص هستش که زیاد کاربرد نداره.
یکی دیگه رسیدن به یک خطای مشخص هستش.
 

mzolfaghari

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

atefeht

عضو جدید
سلام
میشه در مورد کالیبره کردن (verification) داده ها در شبکه عصبی هم توضیح بدین؟؟
کجا باید تعداد داده هارو برای کالیبره کردن مشخص کنیم؟؟؟
ممنونم
 

pedram021

کاربر بیش فعال
بسته به معیار توقف که مثلا خطای شبکتون میتونه باشه اگر از یه حد مشخصی کمتر بشه آموزش به اتمام میرسه(اینکار رو معمولا نرم افزارهایی که شبکه عصبی رو دارن خود بخود انجام میدن)
اگر هم دارین معماری کارمیکنین که خودتون باید توی کد نویسیتون جاش بدین!:D:gol:
بطور کلی
1-تعداد دوره های آموزش به حداکثر برسد(اینو خودتون میتونین تعیین کنید)
2-اهداف رخ داده باشد(خروجی به هدف نزدیک شده باشد)
3-شرایط توقف آموزش شبکه (net.trainFcn) محقق شده باشد
بعضی وقتها هم هست که وزن ها وبایاس شبکه نمیتونن به سمت مینمم ارور خاصی شبکه رو راهنمایی کنن(بین هدف و خروجی شبکه اختلاف زیادی هست ) بعد از چند دوره خودش متوقف میشه
...
ولی درکل اگه میخواهین تعدا دوره ها رو خودتون تعیین کنین که مثلا بعد از این تعداد داده هاتون بطور کامل آموزش دیدن !!اینجور کاری اصلا پیشنهاد نمیشه یعنی بصرفه نیست چون شما نمیتونین ساختار شبکه رو دنبال کنین ... مگه اینکه برای شبکه هایی بخواهین که صرفا قابلیت طبقه بندی رو نداشته باشن بلکه با داده های جدید خودشونو وفق بدن که بعید میدونم این کار مد نظر شما باشه ..
پس بهترین کار معیار توقف error هست در صورتی که در معماری شبکه عصبی که دارین طراحی میکنین اینو در نظر نگیرن برای داده های پرت شبکتون همگرا نخواهد شد!بنابراین متوقف هم نخواهد شد:D:gol:

 

pedram021

کاربر بیش فعال
سلام
میشه در مورد کالیبره کردن (verification) داده ها در شبکه عصبی هم توضیح بدین؟؟
کجا باید تعداد داده هارو برای کالیبره کردن مشخص کنیم؟؟؟
ممنونم
منظورتون درصد انتخاب داده های آموزش وتست هست؟
 

atefeht

عضو جدید
منظورتون درصد انتخاب داده های آموزش وتست هست؟

با سلام
بله.
اطلاعات 19 ایستگاه برای یک دوره آماری (23سال)دارم، برای اینکه بهترین نوع شبکه رو انتخاب کنم ، چند تا مدل انتخاب کردم مثل لومبرگ، پرسپترون و پس انتشار و ......
از این تعداد داده نمیدونم کجا باید مشخص کنم که چند درصدش برای آموزش باشه و چند درصدش برای کالیبره کردن؟؟
یک بار تمام داده ها رو دادم برای آموزش ، بعد خروجی کمتر از تعداد ورودی بود، یعنی من که 19 تا ایستگاه داشتم، خروجی فقط 11 تا ایستگاه رو داده بود اونم به صورت پراکنده

نمیدونم باید چه کنم؟؟
ممنون میشم اگه راهنمایی کنید.
 

pedram021

کاربر بیش فعال
با سلام
بله.
اطلاعات 19 ایستگاه برای یک دوره آماری (23سال)دارم، برای اینکه بهترین نوع شبکه رو انتخاب کنم ، چند تا مدل انتخاب کردم مثل لومبرگ، پرسپترون و پس انتشار و ......
از این تعداد داده نمیدونم کجا باید مشخص کنم که چند درصدش برای آموزش باشه و چند درصدش برای کالیبره کردن؟؟
یک بار تمام داده ها رو دادم برای آموزش ، بعد خروجی کمتر از تعداد ورودی بود، یعنی من که 19 تا ایستگاه داشتم، خروجی فقط 11 تا ایستگاه رو داده بود اونم به صورت پراکنده

نمیدونم باید چه کنم؟؟
ممنون میشم اگه راهنمایی کنید.
اول اینکه به هیچ وجه تمام داده هاتون رو train نکنین
بعدش بگین کل دیتا هاتون چقدری هستن؟
خروجی مطبلوب یا target شما چی هست؟(یعنی دقیقا میخواین چیکار کنین؟)
برداشت من از صحبت هاتون اینه که دارین روند کار رو اشتباه انجام میدید

*یه نکته خیلی مهم اینه که اگر مثلا دیتاهای شما 100تا (دسته) باشند هرچقدر که شما بتونین با دیتای کمتری آموزش بدین و با داده های بیشتری تست کنین شبکه و پروژه شما قابل اطمینان تر خواهد بود
مثلا اگر 50 تا بدین برا آموزش و 50 تا هم برای تست و نتیجه مطلوب بگیرین(مثلا درصد اطمینان 80 درصد)! خیلی بهتره تا 75 تا بدین و 25 تا بذارین براتست و حتی اگر نتیجه بهتری نسبت به حالت قبل (مثلا85 درصد)بگیرن...
حالا بازم اگه خواستین بیشتر توضیح میدم
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
البته دو تا موضوع هم به ذهنم میرسه شاید بد نباشه،
1. آموزش بیش از حد با داده آموزشی میتونه منجر به Over Fitting بشه و انعطاف پذیری رو هم کاهش خواهد داد
2. انتخاب مجموعه داده آموزشی نیز بسیار مهمه
:heart:
 

atefeht

عضو جدید
اول اینکه به هیچ وجه تمام داده هاتون رو train نکنین
بعدش بگین کل دیتا هاتون چقدری هستن؟
خروجی مطبلوب یا target شما چی هست؟(یعنی دقیقا میخواین چیکار کنین؟)
برداشت من از صحبت هاتون اینه که دارین روند کار رو اشتباه انجام میدید

*یه نکته خیلی مهم اینه که اگر مثلا دیتاهای شما 100تا (دسته) باشند هرچقدر که شما بتونین با دیتای کمتری آموزش بدین و با داده های بیشتری تست کنین شبکه و پروژه شما قابل اطمینان تر خواهد بود
مثلا اگر 50 تا بدین برا آموزش و 50 تا هم برای تست و نتیجه مطلوب بگیرین(مثلا درصد اطمینان 80 درصد)! خیلی بهتره تا 75 تا بدین و 25 تا بذارین براتست و حتی اگر نتیجه بهتری نسبت به حالت قبل (مثلا85 درصد)بگیرن...
حالا بازم اگه خواستین بیشتر توضیح میدم


با سلام
ممنون از توضیحاتتون
اطلاعات بارندگی رو برای 23 سال و برای 19 ایستگاه هواشناسی و برای هر 12 ماه سال دارم. و قراره برای یک سال بعد پیش بینی کنم.
پس target میشه همون میزان بارندگی ولی برای یک سال بعد و برا ی هر 12 ماه . درواقع میخوام این بارندگی هارو بدم به شبکه بعد خروجی دوباره بارندگی باشه.
حالا روال کار به چه صورته؟؟
یعنی من توی این مدت اشتباه کردم؟؟

من توی مقالات خوندم که معمولاً 70 درصد داده ها برای آموزش و 30 در صد برای تست. این که میگین داده های کمتری رو برای آموزش بذارم ، واقعیتش اولین بار دارم می شنوم.

راهنماییم میکنید که در کدام قسمت درصد داده هارو مشخص کنم؟؟ طوری که خروجی هام کمتر نشه. باز دوباره برای همون 19 ایستگاه و برای هر 12 ماه سال بعد یه خروجی بهم بده.
 

pedram021

کاربر بیش فعال
با سلام
ممنون از توضیحاتتون
اطلاعات بارندگی رو برای 23 سال و برای 19 ایستگاه هواشناسی و برای هر 12 ماه سال دارم. و قراره برای یک سال بعد پیش بینی کنم.
پس target میشه همون میزان بارندگی ولی برای یک سال بعد و برا ی هر 12 ماه . درواقع میخوام این بارندگی هارو بدم به شبکه بعد خروجی دوباره بارندگی باشه.
حالا روال کار به چه صورته؟؟
یعنی من توی این مدت اشتباه کردم؟؟

من توی مقالات خوندم که معمولاً 70 درصد داده ها برای آموزش و 30 در صد برای تست. این که میگین داده های کمتری رو برای آموزش بذارم ، واقعیتش اولین بار دارم می شنوم.

راهنماییم میکنید که در کدام قسمت درصد داده هارو مشخص کنم؟؟ طوری که خروجی هام کمتر نشه. باز دوباره برای همون 19 ایستگاه و برای هر 12 ماه سال بعد یه خروجی بهم بده.
بله درسته که حدود 70 درصد داده ها رو برای آموزش به شبکه میدن(خود نرم افزاری مثل MATLAB داده ها شو به همین صورت آموزش میده)....اونچیزی که گفتم برای اطمینان بیشتر بود(حالا اگه خواستین بیشتر توضیح میدم)
ولی در کل
شما الان داداه های 23 سالی که در اختیارتون هست
اطلاعات 15 یا 16 سال اول رو به شبکه بدین آموزش بدین و سعی کنین به خروجی مطلوب برسین... بعد بیاین اون داده های 8 یا 7 سالی رو که نگه داشتین برای تست به شبکه بدید درصد صحت شبکه شما توی داده هایی که ندیده مشخص میشه....
اما بحث ورودی هاتون و اون مشکلی که برای خروجی شبکتون پیش اومده بود
جوری که من متوجه شدم شما باید انتظار داشته باشین خروجی شبکتون برای یک سال یک ماتریس 19در12 باشه ؟ درسته؟
 

atefeht

عضو جدید
بله درسته که حدود 70 درصد داده ها رو برای آموزش به شبکه میدن(خود نرم افزاری مثل MATLAB داده ها شو به همین صورت آموزش میده)....اونچیزی که گفتم برای اطمینان بیشتر بود(حالا اگه خواستین بیشتر توضیح میدم)
ولی در کل
شما الان داداه های 23 سالی که در اختیارتون هست
اطلاعات 15 یا 16 سال اول رو به شبکه بدین آموزش بدین و سعی کنین به خروجی مطلوب برسین... بعد بیاین اون داده های 8 یا 7 سالی رو که نگه داشتین برای تست به شبکه بدید درصد صحت شبکه شما توی داده هایی که ندیده مشخص میشه....
اما بحث ورودی هاتون و اون مشکلی که برای خروجی شبکتون پیش اومده بود
جوری که من متوجه شدم شما باید انتظار داشته باشین خروجی شبکتون برای یک سال یک ماتریس 19در12 باشه ؟ درسته؟



سلام
داده های 15 سال رو ورودی بدم، میتونم همینم به عنوان target تعریف کنم، یعنی همین 15 سال رو دوباره به عنوان خروجی مور د نظر تعریف کنم؟؟
من تا حالا شبکه ران نکردم . اینم برای پروژمه

اگه داده های 15 سال بدم در این صورت خروجی هم باید به صورت یک ماتریس 15 در 19 باشه.
داده ها توی فایل اکسل هست. . این داده ها به این صورت هست توی اکسل ، ایستگاه ها در ردیف و سال ها در ستون هست. من به همین صورت برای شبکه هم وارد کردم. آیا باید همه ی داده ها در یک ستون وارد شود؟؟یعنی که داده های 15 سال پشت سر هم در یک ستون وارد شود؟؟

راستی در کداام قسمت باید مشخص بشه چند درصد برای اموزش و چند درصد برای تست؟؟
شنیدم که می گن خود شبکه خودش انتخاب میکنه که 70 در صد برای اموزش و 30 درصد برای تست. اگه اینطوره ، پس چرا داده های آموزش و تست رو جدا می کنیم؟

ممنونم
:gol: :gol::gol::gol:
 

pedram021

کاربر بیش فعال
یه نکته :
شما تمام داده هاتون رو آموزش بدین تفکیک نکنین یعنی تمام 23 سال رو ...چون شما میخواهین پیش بینی کنین نه طبقه بندی
پس مثل تخمین توابع عمل کنین بهتره تمام سال ها رو به شبکه بدین(بابت این موضوع معذرت)

..
اما به هیچ وجه داداه های ورودی و TARGET رو یکی نکنین!چون شما اطلاعات سال جدید رو که ندارین!
پس یک بردار ستونی که( 23*19=437 ) تا سطر دارد رو به عنوان هدف target در نظر بگیرین و بردار ورودی رو هم اعداد 1 تا 437(فک کنم اینکار رو انجام بدید به جواب برسین حالا امتحان کنین!)
خود نرم افزار matlab این کار رو انجام میده(بصورت پیش فرض) ...خودتون هم میتونین تغییرش بدید.
**
من خودم دانشجوی ارشد مهندسی پزشکی هستم وتازه اول راه.. اگر اشتباهی در اطلاعات بیان شده هست ..بذارین بر این حساب:gol:
و خودتون هم مقالات مربوط به این موضوع رو مطالعه کنین ببین چیکار کردن
 

atefeht

عضو جدید
یه نکته :
شما تمام داده هاتون رو آموزش بدین تفکیک نکنین یعنی تمام 23 سال رو ...چون شما میخواهین پیش بینی کنین نه طبقه بندی
پس مثل تخمین توابع عمل کنین بهتره تمام سال ها رو به شبکه بدین(بابت این موضوع معذرت)

..
اما به هیچ وجه داداه های ورودی و TARGET رو یکی نکنین!چون شما اطلاعات سال جدید رو که ندارین!
پس یک بردار ستونی که( 23*19=437 ) تا سطر دارد رو به عنوان هدف target در نظر بگیرین و بردار ورودی رو هم اعداد 1 تا 437(فک کنم اینکار رو انجام بدید به جواب برسین حالا امتحان کنین!)
خود نرم افزار matlab این کار رو انجام میده(بصورت پیش فرض) ...خودتون هم میتونین تغییرش بدید.
**
من خودم دانشجوی ارشد مهندسی پزشکی هستم وتازه اول راه.. اگر اشتباهی در اطلاعات بیان شده هست ..بذارین بر این حساب:gol:
و خودتون هم مقالات مربوط به این موضوع رو مطالعه کنین ببین چیکار کردن



ممنونم
ببخشید، اینکه گفتید برای ورودی یک بردار 1*437، منظورتون دقیقاً چیه؟؟ میشه بیشتر توضیح بدین؟ یعنی فقط اعدا 1 تا 437 بذارم
بعد برای تابع target، بردار ستونی که مقدار بارندگی هاست و بذارم؟؟
ممنون میشم اگه بیشتر توضیح بدین.
:confused::confused:
 

Similar threads

بالا