اطلاعیه

Collapse
No announcement yet.

پرسپترون 3 لایه

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پرسپترون 3 لایه

    سلام به همه

    بچه ها به شدت به یک کد تو متلب نیاز دارم

    یک پرسپترون 3 لایه یا همون MLP
    خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

    #2
    پاسخ : پرسپترون 3 لایه

    سلام. اگه منظورت با استفاده از تولباکس شبکه عصبی متلبه:
    کد PHP:
    net fitnet(layers_neurons);
    [
    nettr] = train(netinputstargets);
    outputs net(inputs); 


    متغیر targets در صورتی استفاده میشه که داده های آموزشی داشته باشی.
    تعداد لایه ها توسط متغیر layers_neurons تعیین میشه، این متغیر یک بردار 1 در n هست (n = تعداد لایه ها) که هر المان اون تعداد نرون ها در لایه مخفی مربوطه رو مشخص میکنه مثلاً اگه میخوای سه لایه با تعداد نرون های 10، 20 و 5 داشته باشی میشه [10,20,5].

    targets هم یک ماتریس است که تعداد سطرها مساوی است با تعداد خروجی ها و تعداد ستون ها مساوی است با تعداد داده ها(مشاهدات)، که در هر ستون(داده/مشاهده) فقط خروجی درست یک است و بقیه صفرند. خروجی outputs شبکه عصبی هم یک ماتریس مشابه targets است که مقادیر هر ستون بین صفر و یک هستند و مقداری که ماکزیمم شده را باید به عنوان کلاس ورودی متناظر انتخاب کرد.
    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

    دیدگاه


      #3
      پاسخ : پرسپترون 3 لایه

      حمید جان میتونی از اینترفیس گرافیکی تولباکس شبکه عصبی متلب هم استفاده کنی که محیط گرافیکی و ساده تری داره.
      با تایپ nntool یا nprtool میتونی داشته باشیشون!

      در نهایت کد نخواهی داشت بلکه یک ساختار خواهی داشت که با دریافت ورودی، خروجی مناسب تولید میکنه.
      It's nice to be important but it's important to be nice!

      از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

      دیدگاه


        #4
        پاسخ : پرسپترون 3 لایه

        فقط nftool
        نوشته اصلی توسط رضا شفقی

        در نهایت کد نخواهی داشت بلکه یک ساختار خواهی داشت که با دریافت ورودی، خروجی مناسب تولید میکنه.
        البته تا اونجا که من میدونم ( 95 %) با کد نویسی (به صورت غیر گرافیکی) هم میشه ازین تول باکسا استفاده کرد

        یه بار دیدیم استادم داشت کداشو دسکاری میکرد (اِپوچ و ایناشو ...) ولی خودم باهاش ور نرفتم :cry:
        پشت به کنکور ، رو به سربازی...

        دیدگاه


          #5
          پاسخ : پرسپترون 3 لایه

          نوشته اصلی توسط black-8
          فقط nftool البته تا اونجا که من میدونم ( 95 %) با کد نویسی (به صورت غیر گرافیکی) هم میشه ازین تول باکسا استفاده کرد

          یه بار دیدیم استادم داشت کداشو دسکاری میکرد (اِپوچ و ایناشو ...) ولی خودم باهاش ور نرفتم :cry:
          بله برای مواردی که نیازی به کار اتوماتیک و بهینه سازی هست حتما باید کد استفاده بشه. منظور بنده برای شروع کار با تولباکس هست!
          It's nice to be important but it's important to be nice!

          از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

          دیدگاه


            #6
            پاسخ : پرسپترون 3 لایه

            ممنون از همه

            یه کد میخوام

            غیر گرافیکی

            من تو این ضمینه ضعیفم و این موضوع خیلی ضروری و سریع
            خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

            دیدگاه


              #7
              پاسخ : پرسپترون 3 لایه

              میشه دقیقا بگید چی می خواین؟ایجاد یک شبکه پرسپترون سه لایه در محیط command window کدنویسی بشه؟ ورودی چیه؟
              جانم به فدای ائمه اطهار
              می دونستم تحمل مرگ اعضای خانواده خیلی سخته ولی نه تا این حد،ایکاش پدرم بیشتر می موند.روحش شاد.

              دیدگاه


                #8
                پاسخ : پرسپترون 3 لایه

                نوشته اصلی توسط ahmadpashaei
                میشه دقیقا بگید چی می خواین؟ایجاد یک شبکه پرسپترون سه لایه در محیط command window کدنویسی بشه؟ ورودی چیه؟
                آره - یه جدا سازی باشه - یا حل XOR یا ...

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

                دیدگاه


                  #9
                  پاسخ : پرسپترون 3 لایه

                  من خوب متوجه نشدم ولی برای ایجادش با کدنویسی:
                  1- ابتدا بردار pورودی و t خروجی رو تعریف کنید
                  2- شبکه رو با دستور زیر ایجاد کنید:
                  net=newff(minmax(p),[a,b],{'f1','f2'},'c'
                  که a تعداد نورونهای لایه میانی و ذ تعداد نورونهای لایه خروجی
                  f1 تابع فعالسازی لایه میانی و f2 برای لایه خروجی و c روش آموزش هست که میتونه traingd و traingdm و یا بهتراش که از تکنیکهای اکتشافی momentum استفاده می کنن و سریعترند مثل traingda و trainrp (فکر کنم!) باشند.
                  پس از ایجاد شبکه تعداد تکرار یا iterationها رو میتونی با دستور زیر تعیین کنی:

                  net,trainepoch=.....;
                  [net,t]=train(net,p,t)
                  a=sim(net,p)

                  جانم به فدای ائمه اطهار
                  می دونستم تحمل مرگ اعضای خانواده خیلی سخته ولی نه تا این حد،ایکاش پدرم بیشتر می موند.روحش شاد.

                  دیدگاه


                    #10
                    پاسخ : پرسپترون 3 لایه

                    برای ذهنیت بهتر پیدا کردن میتونی به دموهای متلب رجوع کنی که در آدرس زیرند:
                    back propogation------>chapter11

                    یا تایپ عبارت nnd11nf در command window و سپس برای محاسبه هم تایپ nnd11bc
                    در دموی nnd11fa هم میتونی با تغییر تعداد نرون تاثیر feed کردن رو ببینی
                    موفق باشید.
                    راستی XOR تابع تفکیک ناپذیر خطی هست و از پرسپترون نمیشه استفاده کرد برای تفکیکش و حتما باید شبکه دولایه باشه.
                    جانم به فدای ائمه اطهار
                    می دونستم تحمل مرگ اعضای خانواده خیلی سخته ولی نه تا این حد،ایکاش پدرم بیشتر می موند.روحش شاد.

                    دیدگاه


                      #11
                      پاسخ : پرسپترون 3 لایه

                      نوشته اصلی توسط ahmadpashaei
                      برای ذهنیت بهتر پیدا کردن میتونی به دموهای متلب رجوع کنی که در آدرس زیرند:
                      back propogation------>chapter11

                      یا تایپ عبارت nnd11nf در command window و سپس برای محاسبه هم تایپ nnd11bc
                      در دموی nnd11fa هم میتونی با تغییر تعداد نرون تاثیر feed کردن رو ببینی
                      موفق باشید.
                      راستی XOR تابع تفکیک ناپذیر خطی هست و از پرسپترون نمیشه استفاده کرد برای تفکیکش و حتما باید شبکه دولایه باشه.
                      من کجا نوشتم XOR با پرسپترون تک لایه حل میشه؟؟ به من نشون میدی؟

                      بعدم من همه این ها رو میدونم-یه کار فوری دارم یه کد آماده میخوام-پرسیدم کسی داره یا نه

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

                      دیدگاه


                        #12
                        پاسخ : پرسپترون 3 لایه

                        نوشته اصلی توسط حمید نجفی
                        من کجا نوشتم XOR با پرسپترون تک لایه حل میشه؟؟ به من نشون میدی؟

                        بعدم من همه این ها رو میدونم-یه کار فوری دارم یه کد آماده میخوام-پرسیدم کسی داره یا نه

                        ممنون از کمکتون
                        حمید جان چرا منو می زنی!!!! ببخشید من کلی گفتم و البته نباید می کفتم :cry2:
                        .شبکه MLP رو اینجوری کدنویسی می کنن دیگه،چیزای دیگه ای داره که برای آموزش بهتر و پیشرفته (دسته ای کاهش شیب و نیز کاهش شیب با مومنتوم) استفاده میشه و که پارامترهای تابع TRAINGD رو که شامل epochs,show,goal,lr و ... هستند میشه دستی وارد کرد.البته بازم ریزه کاری زیاد داره که منم کار نکردم. کد آماده ای که میخواین با چیزی جز اینها که نیست؟
                        جانم به فدای ائمه اطهار
                        می دونستم تحمل مرگ اعضای خانواده خیلی سخته ولی نه تا این حد،ایکاش پدرم بیشتر می موند.روحش شاد.

                        دیدگاه


                          #13
                          پاسخ : پرسپترون 3 لایه

                          این MLP که آقای نحوی زحمت کشیده و جزو تاپیک های مهمه-چطور run میشه؟
                          چندین بخش شده
                          خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

                          دیدگاه


                            #14
                            پاسخ : پرسپترون 3 لایه

                            نوشته اصلی توسط ahmadpashaei
                            من خوب متوجه نشدم ولی برای ایجادش با کدنویسی:
                            1- ابتدا بردار pورودی و t خروجی رو تعریف کنید
                            2- شبکه رو با دستور زیر ایجاد کنید:
                            net=newff(minmax(p),[a,b],{'f1','f2'},'c'
                            که a تعداد نورونهای لایه میانی و ذ تعداد نورونهای لایه خروجی
                            f1 تابع فعالسازی لایه میانی و f2 برای لایه خروجی و c روش آموزش هست که میتونه traingd و traingdm و یا بهتراش که از تکنیکهای اکتشافی momentum استفاده می کنن و سریعترند مثل traingda و trainrp (فکر کنم!) باشند.
                            پس از ایجاد شبکه تعداد تکرار یا iterationها رو میتونی با دستور زیر تعیین کنی:

                            net,trainepoch=.....;
                            [net,t]=train(net,p,t)
                            a=sim(net,p)


                            سلام
                            من یه مسئله ای دارم که باید با پرسپترون سه لایه حلش کنم.مسئله ام اینه:


                            سه دسته ورودی داریم.این سوال به این صورت مطرح شده که :
                            با فرض داشتن تابعِِ

                            f=(1 +x^0.5 +y^-1 +z^-1.5)^2
                            x وy بین 1 و 6

                            216جفت ورودی برای ورودی و خروجی برای داده اموزش.
                            125 زوج ورودی و خروجی برای داده تست
                            125 زوج ورودی برای داده اعتبار سنجی یا validation
                            در نظر بگیرید..به عنوان تابع فعال ساز لایه میانی هم از یکی از توابع سیگموند دوقطبی، تکقطبی یا خطی استفاده کنید

                            کدی رو که گفتید رو استفاده کردم.ولی یه اروری میده ..میتونید راهنماییم کنید؟

                            کدی که خودم نوشتم اینه..نمیدونم دسته بندی داده های به تست و ترین و ولیدیشن درسته یا نه..ولی حالا به هر حال

                            x1=[rand(1,216)*(6-1)+1;rand(1,216)*(6-1)+1]
                            y1=[rand(1,216)*(6-1)+1;rand(1,216)*(6-1)+1]
                            z1=[rand(1,216)*(6-1)+1;rand(1,216)*(6-1)+1]

                            xtr=(1 +x1.^0.5 +x1.^-1 +x1.^-1.5).^2
                            ytr=(1 +y1.^0.5 +y1.^-1 +y1.^-1.5).^2
                            ztr=(1 +z1.^0.5 +z1.^-1 +z1.^-1.5).^2

                            x2=[rand(1,125)*(6-1)+1;rand(1,125)*(6-1)+1]
                            y2=[rand(1,125)*(6-1)+1;rand(1,125)*(6-1)+1]
                            z2=[rand(1,125)*(6-1)+1;rand(1,125)*(6-1)+1]

                            xte=(1 +x2.^0.5 +x2.^-1 +x2.^-1.5).^2
                            yte=(1 +y2.^0.5 +y2.^-1 +y2.^-1.5).^2
                            zte=(1 +z2.^0.5 +z2.^-1 +z2.^-1.5).^2

                            x3=[rand(1,125)*(6-1)+1;rand(1,125)*(6-1)+1]
                            y3=[rand(1,125)*(6-1)+1;rand(1,125)*(6-1)+1]
                            z3=[rand(1,125)*(6-1)+1;rand(1,125)*(6-1)+1]

                            xv=(1 +x3.^0.5 +x3.^-1 +x3.^-1.5).^2
                            yv=(1 +y3.^0.5 +y3.^-1 +y3.^-1.5).^2
                            zv=(1 +z3.^0.5 +z3.^-1 +z3.^-1.5).^2

                            Test=[xte ;yte ;zte]
                            Valid=[xv ;yv ;zv]

                            %Target
                            T=(1 +x1.^0.5 +y1.^-1 +z1.^-1.5).^2

                            %voroudi
                            P=[xtr ;ytr ;ztr]

                            net=newff(minmax(P),[5,1],{'logsig','purelin'},'tr aingd&#039

                            net,trainepoch=100
                            [net,T]=traingd(net,P,T,Test,Valid)
                            a=sim(net,P)
                            plot(P,T,P,a,'o&#039

                            خطایی هم که میده اینه:
                            Error using traingd
                            Output data size does not match net.outputs{2}.size.

                            یعد یه چیزی..تو این دستور newff میتونیم مشخص کنیم که د رکل چند لایه میخوایم؟

                            دیدگاه


                              #15
                              پاسخ : پرسپترون 3 لایه

                              در تابع newff
                              net=newff(minmax(P),[5,1],{'logsig','purelin'},'tr aingd&#039
                              آرگومان اول ماتریس نشان دهنده تعداد و همچنین بازه ورودیهاست که شما با تابع minmax مقادیر ماکزیمم-مینیمم p رو بهش معرفی کردین
                              آرگومان دوم یه آرایه که به ترتیب از چپ به راست نشاندهنده تعدا نرونهای لایه میانی اول تا لایه خروجی هست. (تعداد ورودی در آرگومان اول مشخص میشه) که شما 5 نرون در لایه میانی درخواست کردین با یک خروجی
                              آرگومان سوم سلولی از رشته هاست که نشوندهنده تابع فعالیت در لایه ها ست که شما برای لایه میانیتون logsig و برای لایه خروجی purelin یا خطی استفاده کردین
                              آرگومان آخر روش آموزش هست که فکر میکنم آموزش دسته ای به روش گرادیان نزولی هست
                              ***** شما که گفتین نمیخواین از تولباکس استفاده کنید. newff که یعنی تولباکس *****

                              دیدگاه

                              لطفا صبر کنید...
                              X