مجموعه های خود را بهینه کنید و محتوا را مطابق با تنظیمات خود طبقه بندی کنید.
در این رهبری ، شما می آموزید که چگونه با استفاده از آموزش انتقال از یک شبکه قبلاً آموزش دیده ، تصاویر گربه ها و سگ ها را طبقه بندی کنید.
یک مدل از قبل آموزش دیده یک شبکه ذخیره شده است که قبلاً در یک مجموعه داده بزرگ ، به عنوان یک قاعده ، بر روی یک کار بزرگ در مقیاس طبقه بندی تصاویر آموزش دیده است. شما یا از یک مدل از قبل آموزش دیده استفاده می کنید ، یا از آموزش انتقال برای پیکربندی این مدل برای این کار استفاده می کنید.
شهود اساسی یادگیری انتقال برای طبقه بندی تصاویر این است که اگر این مدل در یک مجموعه داده های بزرگ و نسبتاً کلی مطالعه کند ، این مدل به طور مؤثر به عنوان یک الگوی مشترک از دنیای بصری عمل می کند. سپس می توانید از این نقشه های مورد مطالعه اشیاء بدون شروع از ابتدا استفاده کنید و یک مدل بزرگ را در یک مجموعه داده بزرگ آموزش دهید.
در این نوت بوک دو روش برای پیکربندی یک مدل از پیش آموزش داده شده را امتحان خواهید کرد:
از بین بردن علائم: از ایده های مورد مطالعه توسط شبکه قبلی برای استخراج علائم مهم از نمونه های جدید استفاده کنید. شما به سادگی یک طبقه بندی جدید اضافه می کنید که از ابتدا در بالای یک مدل قبلاً آموزش دیده مطالعه می کند تا بتوانید از نقشه های اشیاء مورد مطالعه قبلی برای استخدام داده ها استفاده کنید.
شما نیازی به آموزش کل مدل ندارید. شبکه اصلی Sparkle قبلاً شامل توابع است که معمولاً برای طبقه بندی تصاویر مفید هستند. با این حال ، قسمت طبقه بندی نهایی یک مدل از پیش آموزش داده شده مخصوص کار طبقه بندی اولیه است ، و سپس برای مجموعه ای از کلاس هایی که مدل در آن آموزش داده شده است خاص است.
تنظیمات ظریف: یخ زدایی چند لایه بالایی مدل پایه یخ زده و به طور مشترک هر دو لایه اخیراً اضافه شده طبقه بندی کننده و آخرین لایه های مدل پایه را آموزش می دهد. این به ما امکان می دهد نمایش های یک مرتبه بالاتر را در مدل اصلی "پیکربندی کنیم" تا آنها را برای یک کار خاص مناسب تر کنیم.
شما روند کار کلی یادگیری ماشین را دنبال خواهید کرد.
- مطالعه و درک داده ها
- در این مورد با استفاده از Keras ImageDagenerator یک نوار نقاله ورودی ایجاد کنید.
- یک مدل درست کردن
- بارگیری یک مدل پایه از پیش آموزش (و وزن قبل از آموزش)
- لایه های طبقه بندی را از بالا جمع کنید
- مدل را آموزش دهید
- مدل را ارزیابی کنید
داده های پیش پردازش
بار داده ها
در این درس از مجموعه ای از داده ها حاوی چندین هزار تصویر گربه و سگ استفاده خواهید کرد. پرونده zip حاوی تصاویر را بارگیری و باز کنید ، سپس برای یادگیری و آزمایش با استفاده از tf. keras. utils. image_dataseet_from_directory tf. data. dataset ایجاد کنید. می توانید در مورد بارگیری تصاویر در این راهنما اطلاعات بیشتری کسب کنید.
نه تصویر و علائم اول را از مجموعه آموزش نشان دهید:

از آنجا که مجموعه داده های اولیه حاوی مجموعه آزمایشی نیست ، شما آن را ایجاد خواهید کرد. برای انجام این کار ، تعیین کنید که چند بسته داده در یک مجموعه آزمایشی با استفاده از tf. data. experimental. cardinaly در دسترس است و سپس 20 ٪ از آنها را به یک مجموعه آزمایش منتقل کنید.
مجموعه داده ها را برای عملکرد تنظیم کنید
برای بارگیری تصاویر از دیسک بدون مسدود کردن ورودی و خروجی از یک نمونه اولیه بافر استفاده کنید. برای کسب اطلاعات بیشتر در مورد این روش ، به کتابچه راهنمای مدیریت داده مراجعه کنید.
از افزایش داده ها استفاده کنید
اگر مجموعه بزرگی از این تصاویر را ندارید ، یک عمل خوب یک معرفی مصنوعی از انواع نمونه ها با استفاده از تحولات تصادفی اما واقع بینانه مانند چرخش و بازتاب افقی در آموزش تصاویر است. این کمک می کند تا مدل را برای جنبه های مختلف داده های آموزشی و کاهش تجهیزات مورد استفاده قرار دهید. می توانید در مورد افزایش داده ها در این کتابچه راهنمای اطلاعات بیشتر کسب کنید.
بیایید دوباره این لایه ها را به همان تصویر بپردازیم و به نتیجه نگاه کنیم.

تغییر مقیاس مقادیر پیکسل
پس از یک لحظه ، برای استفاده به عنوان یک مدل پایه ، tf. keras. applications. mobilenetv2 را بارگیری خواهید کرد. این مدل در حال انتظار پیکسل ها در [-1 ، 1] است ، اما در حال حاضر ، مقادیر پیکسل در تصاویر شما در [0 ، 255] است. برای مقیاس کردن آنها ، از روش پیش پردازش موجود در مدل استفاده کنید.
از مشاوره های از پیش آموزش یک مدل اساسی ایجاد کنید
شما یک مدل اساسی را بر اساس مدل Mobilenet V2 که در Google تهیه شده است ، ایجاد خواهید کرد. این از قبل در مجموعه داده های ImageEnet ، مجموعه بزرگی از داده های متشکل از 1. 4 میلیون تصویر و 1000 درجه است. Imagenet مجموعه ای از داده ها برای مطالعه با طیف گسترده ای از مقوله ها ، مانند جکفروت و سرنگ است. این پایگاه داده دانش به ما کمک می کند تا گربه ها و سگ ها را از مجموعه داده های خاص خود طبقه بندی کنیم.
در مرحله اول ، شما باید انتخاب کنید که برای استخراج علائم از چه سطح Mobilenet V2 استفاده خواهید کرد. آخرین لایه طبقه بندی ("از بالا" ، از آنجا که بیشتر نمودارهای مدل های یادگیری ماشین از پایین به بالا می روند) خیلی مفید نیستند. درعوض ، شما عمل به طور کلی پذیرفته شده را دنبال خواهید کرد تا به آخرین لایه قبل از عمل تراز اعتماد کنید. این لایه "لایه ای از یک مکان باریک" نامیده می شود. توابع یک لایه از یک مکان باریک یک جامعه بزرگ را در مقایسه با لایه نهایی/بالایی حفظ می کند.
در مرحله اول ، یک نسخه از مدل Mobilenet V2 را با Libra از پیش بارگذاری شده در ImageNet ایجاد کنید. با نشان دادن آرگومان شامل_توپ = false ، شما شبکه ای را بارگیری می کنید که شامل لایه های طبقه بندی در بالا نیست ، که برای استخراج علائم ایده آل است.
این استخراج کننده توابع هر تصویر از 160x160x3 را به بلوک توابع 5x5x1280 تبدیل می کند. بیایید ببینیم که او با نمونه ای از بسته تصاویر چه کاری انجام می دهد:
استخراج علائم
در این مرحله ، پایه بسته بندی ایجاد شده در مرحله قبل را یخ می زنید و از آن به عنوان استخراج کننده علائم استفاده خواهید کرد. علاوه بر این ، شما یک طبقه بندی کننده را در بالا اضافه می کنید و یک طبقه بندی کننده سطح بالایی را آموزش می دهید.
یک پایگاه باکنه منجمد
یخ زدن پایه بسته قبل از تدوین و آموزش مدل بسیار مهم است. انجماد (با نصب Layer. Trainable = false) از بروزرسانی مقیاس در این لایه در طول آموزش جلوگیری می کند. Mobilenet V2 لایه های زیادی دارد ، بنابراین نصب پرچم قابل آموزش برای کل مدل در مقدار کاذب ، همه آنها را منجمد می کند.
نکته مهم در مورد لایه های batchnormalization
بسیاری از مدل ها حاوی لایه های tf. keras. layers. batchnormalization هستند. این لایه یک مورد خاص است و در زمینه تنظیم نازک ، باید اقدامات احتیاطی مشاهده شود ، همانطور که بعداً در این راهنمایی نشان داده شده است.
هنگامی که شما Layer. Trainable = False را نصب می کنید ، لایه BatchNormalization در حالت خروجی کار می کند و آمار متوسط و پراکندگی را به روز نمی کند.
هنگامی که مدل حاوی لایه های batchnormalization را یخ می زنید ، برای تنظیم نازک ، باید با انتقال آموزش = نادرست هنگام فراخوانی مدل پایه ، لایه های batchnormalization را در حالت خروجی بگذارید. در غیر این صورت ، به روزرسانی های اعمال شده در مقیاس های ناموفق ، آنچه را که مدل آموخته است از بین می برد.
برای اطلاعات بیشتر ، به آموزش انتقال مراجعه کنید.
عنوان طبقه بندی را اضافه کنید
برای تولید پیش بینی از عملکرد توابع ، به طور متوسط مکان های مکانی مکانی 5x5 با استفاده از tf. keras. layers. globalaverepooling2d لایه برای تبدیل توابع به یک بردار 1280 عنصر برای هر تصویر.
برای تبدیل این توابع به یک پیش بینی برای هر تصویر ، لایه tf. keras. layers. deense را اعمال کنید. در اینجا شما نیازی به عملکرد فعال سازی ندارید ، زیرا این پیش بینی به عنوان ورود یا ارزش فرآوری نشده پیش بینی در نظر گرفته می شود. اعداد مثبت کلاس 1 را پیش بینی می کنند ، اعداد منفی کلاس 0 را پیش بینی می کنند.
با ترکیب لایه های افزایش داده ها ، مقیاس گذاری ، base_model و استخراج علائم با استفاده از کرهای API عملکردی ، یک مدل ایجاد کنید. همانطور که قبلاً ذکر شد ، از آموزش = نادرست استفاده کنید ، زیرا مدل ما حاوی لایه batchnormalization است.
مدل را کامپایل کنید
قبل از آموزش آن مدل را تکمیل کنید. از آنجا که دو کلاس وجود دارد ، از tf. keras. binarycrossentropy tf. keras. losses. binarycross = true استفاده کنید ، زیرا این مدل خروجی خطی را ارائه می دهد.
2. 5 میلیون پارامتر در Mobilenet یخ زده است ، اما 1. 2 هزار پارامتر آموزش دیده در لایه متراکم وجود دارد. آنها بین دو اشیاء متغیر ، وزن و جابجایی از هم جدا می شوند.
مدل را آموزش دهید
پس از آموزش در طی 10 دوره ، باید دقت را ببینید~94 ٪ در مجموعه آزمون.
یادگیری کج
بیایید در هنگام استفاده از مدل پایه mobilenetv2 به عنوان استخراج کننده با عملکردهای ثابت ، به منحنی دقت/ضرر در آموزش و آزمایش نگاهی بیندازیم.

تا حدی کمتر ، این نیز به این دلیل است که متریک آموزش ارزش متوسط دوره را گزارش می کند ، در حالی که معیارهای چک ها پس از دوره ارزیابی می شوند ، بنابراین معیارهای چک مدلی را مشاهده می کنند که کمی بیشتر مورد مطالعه قرار گرفته است.
تنظیم ظریف
در یک آزمایش برای استخراج علائم ، شما فقط چند لایه را روی مدل پایه mobilenetv2 آموزش داده اید. وزن یک شبکه از قبل آموزش دیده در طول آموزش به روز نشده است.
یکی از راه های حتی افزایش بهره وری ، آموزش (یا "تنظیم دقیق") مقیاس لایه های بالایی یک مدل از پیش آموزش داده شده به همراه آموزش طبقه بندی کننده است. در فرآیند آموزش وزنه ها ، باید از نقشه های کلی اشیاء به توابع مربوط به مجموعه داده ها پیکربندی شود.
علاوه بر این ، شما باید سعی کنید تعداد کمی از لایه های فوقانی را پیکربندی کنید ، و نه کل مدل Mobilenet. در بیشتر گروه ها ، هرچه سطح بالاتر باشد ، تخصص بیشتری نیز خواهد داشت. چند لایه اول عملکردهای بسیار ساده و کلی را مطالعه می کنند که تقریباً در همه نوع تصاویر اعمال می شود. همانطور که در بالا بالا می آیید ، توابع برای مجموعه ای از داده هایی که مدل آموزش داده شده است ، بیشتر و بیشتر می شوند. هدف از تنظیم خوب ، تطبیق این کارکردهای تخصصی برای کار با یک مجموعه داده جدید و عدم ضبط آموزش عمومی است.
لایه های بالایی مدل را یخ بزنید
تمام کاری که شما باید انجام دهید یخ زدایی Base_model است و لایه های پایین را ناسالم می کند. سپس باید از مدل عبور کرد (لازم است که این تغییرات به مرحله اجرا برسد) و آموزش را از سر بگیرید.
مدل را کامپایل کنید
از آنجا که شما یک مدل بسیار بزرگتر را آموزش می دهید و می خواهید وزن های قبل از آموزش را مجدداً مورد استفاده قرار دهید ، استفاده از سرعت کمتری در این مرحله مهم است. در غیر این صورت ، مدل شما می تواند خیلی سریع دوباره مطالعه کند.
ادامه آموزش مدل
اگر قبلاً همگرایی را آموزش داده اید ، این مرحله با چند درصد امتیاز ، دقت شما را بهبود می بخشد.
بیایید با تنظیم دقیق چند لایه آخر مدل پایه mobilenetv2 و آموزش طبقه بندی در بالا ، منحنی های آموزش دقت/از دست دادن آموزش و تأیید را بررسی کنیم. ضرر و زیان در طول آزمون بسیار بیشتر از ضررها در طول تمرین است ، بنابراین می توانید مقداری مجدد را دریافت کنید.
همچنین می توانید مقداری از تجهیزات مجدد دریافت کنید ، زیرا مجموعه آموزش جدید نسبتاً اندک است و شبیه به مجموعه منبع داده های MobilenetV2 است.
پس از یک تنظیم نازک ، مدل تقریباً به 98 ٪ دقت در مجموعه آزمایش می رسد.

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

خلاصه
با استفاده از یک مدل از قبل آموزش داده شده برای استخراج علائم. هنگام کار با مجموعه کوچکی از داده ها ، تمرین معمولی استفاده از توابع مورد مطالعه توسط یک مدل آموزش داده شده در مجموعه بزرگی از داده ها در همان منطقه است. این کار با ایجاد یک کپی از مدل از پیش گرفته شده و اضافه کردن یک طبقه بندی کننده کامل از بالا انجام می شود. یک مدل از قبل آموزش دیده "یخ زده" است و فقط وزن طبقه بندی کننده در طول تمرین به روز می شود. در این حالت ، پایگاه حضانت تمام کارکردهای مرتبط با هر تصویر را استخراج کرده است ، و شما به تازگی یک طبقه بندی کننده را آموزش داده اید که کلاس تصویر را با در نظر گرفتن این مجموعه از توابع استخراج شده تعیین می کند.
تنظیم ظریف یک مدل از پیش آموزش. برای افزایش بیشتر بهره وری ، ممکن است مجدداً لایه های سطح بالایی از مدل های از قبل آموزش داده شده را برای یک مجموعه داده جدید از طریق تنظیم دقیق تنظیم کنید. در این حالت ، شما وزنهای خود را به گونه ای تنظیم می کنید که مدل شما عملکردهای سطح بالایی را که مشخصه استخدام داده ها است ، مطالعه می کند. این روش معمولاً زمانی توصیه می شود که مجموعه آموزش بزرگ باشد و بسیار شبیه به مجموعه اولیه داده هایی است که یک مدل از قبل آموزش داده شده مورد مطالعه قرار می گیرد.
برای کسب اطلاعات بیشتر ، به کتاب درسی در انتقال مراجعه کنید.
به استثنای آنچه در غیر این صورت ذکر نشده است ، محتوای این صفحه تحت مجوز Creative Commons Attribution 4. 0 مجوز دارد و نمونه های کد مجوز انتشار Apache 2. 0 را دارند. برای جزئیات بیشتر ، به سیاست های سایت Google Developers مراجعه کنید. جاوا یک علامت تجاری ثبت شده اوراکل و/یا شرکت های وابسته به آن است.
بازار رمزارزها...
ما را در سایت بازار رمزارزها دنبال می کنید
برچسب :
نویسنده : محمود کیانوش
بازدید : <-PostHit->
تاريخ : شنبه
26 فروردين
1402 ساعت: 10:30