پیاده سازی شبکه عمیق در متلب: ساختن شبکه یادگیری عمیق ساده برای کلاسه بندی

پیاده سازی شبکه عمیق در متلب: ساختن شبکه یادگیری عمیق ساده برای کلاسه بندی

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

در این مثال موارد زیر آموزش داده شده است:

  • بارگزاری و جست وجوی داده های تصویری
  • تعریف ساختار شبکه
  • تعیین داده های آموزش و راستی آزمایی
  • پیش بینی شماره کلاس برای یک داده ی جدید و محاسبه ضریب دقت کلاسه بندی
  1. بارگزاری و جست وجوی داده های تصویری

نمونه های رقمی را به صورت یک مجموعه داده که داده های هرکلاس در یک پوشه با یک شماره ی مشخص قرارداده شده اند، بارگزاری کنید. دستور imageDatastore به صورت هوشمند تصاویر را با توجه به اسم پوشه ای که در آن هستند، برچسب گزاری می کند. در این درسنامه از اعداد موجود در پایگاه داده ای به نامDigitDataset  که در خود متلب وجود دارد، استفاده شده است.

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

 

 

برای محاسبه ی تعداد تصاویر در هر کلاس(پوشه) می توان از دستور countEachLabel به صورت زیر استفاده کرد:

وقتی دستور فوق را تایپ کنیم، نتیجه بصورت زیر خواهدشد:

labelCount=10×۲ table    Label    Count

_____    _____

 ۰      ۱۰۰۰

۱      ۱۰۰۰

۲      ۱۰۰۰

۳      ۱۰۰۰

۴      ۱۰۰۰

۵      ۱۰۰۰

۶      ۱۰۰۰

۷      ۱۰۰۰

۸      ۱۰۰۰

۹      ۱۰۰۰

برای ورود اطلاعات به شبکه عصبی عمیق، ابعاد تصاویر باید یکسان و تعیین شده باشد. برای پایگاه داده ی مورد استفاده از دستور زیر برای دانستن ابعاد اولین تصویر استفاده می کنیم:

نتیجه به صورت زیر است:

ans = 1×۲     ۲۸    ۲۸

یعنی تصویر دو بعدی و یک کاناله است و ابعاد آن هم ۲۸*۲۸ است.

  1. تعیین مجموعه داده های آموزش و راستی آزمایی

داه ها را به دو دسته ی آموزش و راستی آزمایی تقسیم کنید. از هرکلاس، ۷۵۰ داده را برای آموزش اختصاص دهید و از بقیه ی دا ه ها را به عنوان داده های راستی آزمایی در نظر بگیرید. با استفاده از دستور splitEachLabel می توانید این کار را انجام دهید. مطابق کد زیر، داده های آموزش و داده های راستی آزمایی در  trainDigitData  وvalDigirData قرارداده خواهند شد.

تعریف ساختار شبکه

در این مرحله ساختار شبکه ی کانولوشن را تعریف می کنیم. در مورد لایه های تشکیل دهنده ی شبکه کانولوشن در درسنامه های قبل توضیحاتی ارائه شده است.

ساختار شبکه ی پیشنهادی به صورت زیر تعریف می شود:

تعریف ویژگی های آموزش

بعد از تعریف ساختارشبکه، ویژگی های آموزش را تعیین می کنیم. منظور از ویژگی های آموزش، تنظیم پارامترهای شبکه برای فرآیند آموزش است. مثلا در این مثال برای آموزش از روش گرادیان نزولی با گشتاور(SGDM) با نرخ یادگیری ۰٫۰۱ استفاده شده است. بیشترین تعداد دفعات تکراررفرآیند آموزش ۴ تعیین شده است. تعریف این پارامترها به صورت زیر انجام می شود:

  1. آموزش شبکه با داده های آموزش

برای فرآیند آموزش، از دستور trainNetwork  استفاده می کنیم. این دستور در حالت عادی، اگر روی سیستم شماGPU وجود داشته باشد، از این سخت افزار برای اجرا استفاده خواهد کرد. تعریف فرآیند آموزش به صورت زیر است:

  • کلاسه بندی داده های راستی آزمایی و محاسبه صحت کار

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

که نتیجه ی آن به صورت زیر خواهد بود:

 

accuracy = 0.9976

 

 

بدون دیدگاه

ارسال یک نظر

نظر
نام
ایمیل
وبسایت