اطلاعیه

Collapse
No announcement yet.

کاهش بعد

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

    کاهش بعد

    سلام
    در مقاله ای کاهش بعد از طریق زیر بدست میاد
    ماتریس n*d رو در d*k ضرب میکنه که n*d ماتریسی است حاوی nتا تصویر یک شخص که هرکدام توسط d فیلتر گابور استخراج ویژگی شده
    که درایه های ماتریس d*k هستند rij
    فقط کافیست متوجه بشم این درایه ها یعنی rijها چجوری مشخص میشن
    فایل زیر حاوی مقاله ای هست که می خوام پیاده کنم
    امکانش هست یه نگاه بندازین و راهنمایی کنید چجوری درایه های rij رو باید به دست بیارم
    صفحه 5 مقاله مربوط به این مبحث می باشد و در آن s=3 است
    ممنون میشم کمک کنید
    فایل مقاله:
    فایل دانلود:http://uplod.ir/iyzujg4zhxrp/New_folder.rar.htm

    #2
    پاسخ : کاهش بعد

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

    یه نگاه سریع انداختم به نظرم اومد که Johnson-Lindenstrauss lemma رو باید دربیاریم. نمونه کدی از روش ندارید؟
    به شخصه کد رو بسیار راحتر میفهمم تا روابط ریاضی.
    موفق باشید
    شأن انسان در ایمان و هجرت و جهاد است و هجرت، مقدمهآ‌ی جهاد فیآ‌سبیلآ‌الله.
    هجرت، هجرت از سنگینیآ‌هاست و جاذبهآ‌هایی که تو را به خاک میآ‌چسباند.
    چکمهآ‌هایت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت کن.

    دیدگاه


      #3
      پاسخ : کاهش بعد

      اگر کدش رو داشتم خوب بود
      یه مشکل دیگم اینه که ماتریس 16*16 که از مقدار درایه هاش برای بدست آوردن هسته های فیلتر گابور استفاده میشه و در ص3 مقاله اومده چیه، ماتریس تصویرمون هست 32*32؟

      دیدگاه


        #4
        پاسخ : کاهش بعد

        سلام.
        پایان نامه زیر رو یه نگاهی بندازی:

        http://cseweb.ucsd.edu/~akmenon/HonoursThesis.pdf


        صفحه 29 PDF توضیحات کاملی در خصوص روشی که گفتید مطرح کرده. من یه بخشیش رو خوندم ولی کاری برام پیش اومد دیگه فرصت نکردم ادامه بدم.
        شما هم یه نگاهی بندازید شاید مفید باشه و نکاتی رو متوجه بشید.
        موفق باشید
        شأن انسان در ایمان و هجرت و جهاد است و هجرت، مقدمهآ‌ی جهاد فیآ‌سبیلآ‌الله.
        هجرت، هجرت از سنگینیآ‌هاست و جاذبهآ‌هایی که تو را به خاک میآ‌چسباند.
        چکمهآ‌هایت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت کن.

        دیدگاه


          #5
          پاسخ : کاهش بعد

          این پایان نامه رو دیدم
          در مقاله ی دیگه ای اومده بود
          let R be a d *k random matrix with R (i,j)=rij ; where {rij}} are independent
          random variables from either one of the following two probability distributions:
          به نظرتون منظورش اینه که به صورت رندم 1/6 رو 3 و 1/6 رو -3 و 2/3 رو 0 قرار بدیم به گونه ای که ماتریس مستقل باشه؟
          یعنی با دستور:
          out = randsrc(k,d,[-3 0 3; 1/6 4/6 1/6])

          دیدگاه


            #6
            پاسخ : کاهش بعد

            سلام ..

            اگر براتون این امکان هست که از Python استفاده کنید، میتونید از Toolkit بینایی ماشین Scikit-Learn استفاده کنید که در اون؛ تابعی برای Random Projection هم وجود داره .. با استفاده از Python میتونید خیلی سریعتر کدتون رو اجرا کنید و نتیجه ی خروجی داده ها رو هم با استفاده از توابع (Function های) پیش بینی شده در این Toolkit ، به راحتی مشاهده کنید .. پیروز باشید ..
            دوستان! مدتی کمتر به سایت میام ..

            دیدگاه


              #7
              پاسخ : کاهش بعد

              ممنون
              آخه من کد بقیه برنامه رو در مطلب پیاده کردم
              اگه این قسمت رو تو pyton بنویسم چجوری می تونم تو مطلب از نتیجش استفاده کنم؟

              دیدگاه


                #8
                پاسخ : کاهش بعد

                سلام ..

                برای به کار بردن توابع Python در نرم افزار MATLAB دو راه قابل اعتماد رو در خاطر دارم که شاید براتون مفید باشن مطرح کردن اونها (--راه های دیگه ای هم هستن؛ امــا من بهشون مسلط نیستم--) .. اولین روش، استفاده از تابع system در نرم افزار MATLAB هست .. روش کار هم میتونیم به این صورت تعریف کنیم .. در ابتدا دو تابع نمونه؛ یکی برای Addition و دیگری هم برای Multiplication مینویسیم در Python و سپس تلاش میکنیم که اینها رو در MATLAB فراخوانی کنیم و از نتایج اونها استفاده .. در لینوکس؛ کار خیلی ساده تر هست و خیلی معمولی میتونیم با دستور vi یک فایل text مانند ایجاد کنیم و روتین و دستورات تابع رو در اون بنویسیم؛ برای مثال: vi test.py برای ما یک فایلی ایجاد میکنه که در انتها میتونیم اونرو توسط Python فراخوانی کنیم .. نحوه ی اجرا و فراخوانی این تابع در Python هم به این صورت هست که در ترمینال لینوکس؛ دستور python test.py var_1 var_2 رو وارد میکنیم و نتیجه ی اجرای برنامه رو میتونیم به صورت خروجی مشاهده کنیم .. امــا در windows کمی مسائل فرق میکنه .. در ابتدا لازم هست که Python رو Download و سپس Install کنید .. برای این منظور، خیلی بهتر این هست که از ورژن 2.7 استفاده کنید؛ چرا که ورژن های 3 کمی پر پیچ و خم هست کار باهاشون و ظرافت، زمان و حوصله ی خاصی لازم دارن .. پس از اون؛ از یک ادیتور خوب لازم هست که استفاده کنید که پیشنهادهای مورد استقبال ++Notepad و Jedit هستن .. بعد از این مرحله همه چیز آماده هست تا بتونید برنامه ی Python در محیط Windows بنویسید .. برای مثال، از تابع زیر، به عنوان نمونه ی اول استفاده میکنیم:


                همونطور که در دستورات بالا هم مشاهده میکنید؛ این تابع دو متغییر به عنوان آرگومان ورودی دریافت میکنه و به عنوان خروجی، جمع اونها رو منعکس میکنه .. امــا الان؛ فرض میکنیم که این قصد رو داشته باشیم که این تابع رو در MATLAB استفاده کنیم و خروجی اون رو هم در متغییری برای استفاده های بعدی ذخیره کنیم .. روش اولی که برای این کار وجود داره؛ استفاده از دستور system هست .. نحوه ی استفاده از این دستور رو میتوینم در تصویر زیر مشاهده کنیم ..


                نکات خیلی مهمی که شاید حتما به اونها باید توجه کنیم؛ یکی این هست که فایل های Python رو (--برنامه هایی که مینویسید؛ برای مثال test.py --) در پوشه ای قرار بدید که فایل Python.exe در اون قرار داره (--اگر به صورت تنظیمات default برنامه ی Python رو نصب کنید در محیط Windows؛ دایرکتوری قرار گرفتن پوشه ی Python معمولا به احتمال بالای %85 چنین آدرسی هست: C:\Python27 --) .. نکته ی دوم هم در مورد نامگذاری فایل ها هست که سعی کنید با نام های پیش بینی شده در MATLAB یکسان نباشن ..

                روش دوم هم استفاده از یک تکنیک کپی و جایگزینی فایل های جدید هست .. در آدرس MATLAB\R2009a\toolbox\matlab\general\.... یک m.file هست با نام perl که برای فراخوانی توابع و دستورات نوشته شده در perl در محیط MATLAB به کار میره .. کاری که لازم هست در این مرحله انجام بشه؛ ساختن یک نسخه ی کپی از این فایل هست؛ و تغییر دادن نام این کپی؛ به python و باز کردن اون و تغییر همه ی اسامی perl به python و در نهایت ذخیره کردن این m.file تازه در آدرسی مشابه .. برای اینکه شاید به این مرحله سرعت ببخشیم؛ این کار رو قبلا انجام دادم و در انتهای این پست میتونید این فایل رو دانلود کنید .. پس از دریافت این فایل؛ لازم هست اون رو در دو قسمت paste کنید؛ اول در دایرکتوری بالا؛ که فایل perl.m هم در اونجا قرار داره و دیگری هم در آدرسی که Python.exe در اون قرار داره .. پس از این مرحله؛ همه چیز آماده هست تا با دستورات دو تصویر بعد؛ برنامه ی نوشته شده در Python رو تست کنیم، البته در محیط MATLAB .. برای اینکه مثال ها متفاوت باشن، این بار قصد این رو داریم که تابع زیر رو در MATLAB تست کنیم ..


                همونطور که در تصویر بالا هم ملاحظه میکنید؛ در این تابع؛ دو متغییری که به عنوان آرگومان ورودی توسط تابع دریافت میشن؛ باهم لازم هست که ضرب بشن و نتیجه ی حاصل، به عنوان خروجی منعکس بشه .. با استفاده از دستورات زیر در MATLAB صحت اجرای برنامه رو میتونیم تست کنیم:


                نکاتی که لازم هست اینجا هم به اونها توجه کنیم؛ موارد مشابه بالا هستن .. با این دو روش میتونید از توابع Python در نرم افزار MATLAB استفاده کنید و نتایج و خروجی های اونها رو در مراحل بعدی، مد نظر قرار بدید .. امید که مطالب این پست بتونن براتون مفید باشن .. پیروز باشید ..
                فایل های پیوست شده
                دوستان! مدتی کمتر به سایت میام ..

                دیدگاه

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