به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

با سلام

چطور می تونم Detectnet رو Finetune بکنم که یک فایل prototxt داره و مدل کافه اش هم مهیا هستش. در ضمن با دیجیت کار می کنم.

توسط (143 امتیاز)

2 پاسخ

0 امتیاز

سلام
برای آموزش یا تنظیم شبکه ها با کفه ۴ مرحله زیر باید انجام شه.
1- جمع آوری دیتا: بهترین راه فایلهای lmdb هست که برای تهیه اون کدی در پوشه Mnist وجود داره که یک فایل متنی حاوی نام فایل و برچسب اون را به عنوان ورودی میگیره و فایل lmdb را می سازه.
2- solver: یک فایل که اطلاعات روند آموزش در آن هست و در تمام مثال های کفه پیدا میشه
3- train_proto: یک فایل که اطلاعات شبکه و همچنین فایل ورودی در اون نوشته میشه. به منظور تنظیم میتونید ضریب یادگیری رو برای تمام لایه ها برابر با صفر و برای لایه هایی که تمایل به تنظیم دارید برابر با 1 قرار بدید. البته در بعضی شرایط مناسب تره ضریب لایه آخر رو بیشتر بدید. و اگر قصد اموزش از ابتدا رو دارید همه ضریب ها رو برابر با 1 قرار بدید.
4- آموزش با استفاده از دستور کامند caffe: این دستور مراحل آموزش رو برای شما انجام میده به عنوان مثال :

build/tools/caffe train --solver=path_to_solver.proto 

اگر تمایل دارید از وزن های آموزش دیده استفاده کنید : build/tools/caffe train --solver=... --weights=path_to_weights_file

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

توسط (418 امتیاز)
راستش من از کامند لاین استفاده نمی کنم و از ابزار DIGITS استفاده می کنم. در این ابزار وقتی بخوای از شبکه های از قبل Train شده استفاده کنی در برنامه میای مدل کفه و همین طور فایل Ptototxt رو بهش میدی ولی برای Fine Tune کردن باید پارامترهایی رو در فایل prototxt تغییر داد مثل نام لایه ها همان طور که شما در یکی از آموزش ها گفتین ولی نمی دونم کدوم لایه میشه در مورد من. اگر یک آدرس ایمیل بهم بدین فایل prototxt رو براتون ارسال می کنم
اگر فایل رو اینجا قرار بدید بهتره شاید سوال سایر دوستان هم باشه.
هرلایه روی لایه قبل قرار میگیره و ترتیب علاوه بر ترتیب نوشتاری از اسم لایه ها و ویژگی بالا و پایین مشخصه.
شما باید از آخرین لایه ها برای تنظیم استفاده کنید. ضرایب یادگیری آنها 1 و ضرایب لایه های ابتدایی صفر.
اما اینکه چند لایه رو تنظیم کنید بسته به شبکه, مساله, میزان شباهت داده ها با داده های مدل اولیه و همچنین حجم داده های آموزش تعیین میشه و دقیق نمی توان گفت این تعداد لایه برای تنظیم بهتر است.
در کل هرچه شباهت داده ها بیشتر باشد تعداد لایه های کمتری را تنظیم میکنند.
هرچه داده های آموزش بیشتر باشد تعداد لایه های بیشتری را تنظیم میکنند.
اینجا قرار دادم.
خیلی ممنون

http://up.persianscript.ir/uploads2/4791-detectnet-network.zip
layer {
  name: "bbox/regressor"
  type: "Convolution"
  bottom: "pool5/drop_s1"
  top: "bboxes"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 4
    kernel_size: 1
    weight_filler {
      type: "xavier"
      std: 0.03
    }
    bias_filler {
      type: "constant"
      value: 0.
    }
  }
}
فرض کنیم این لایه آخر کانو شماست و قصد دارید آنرا تنظیم کنید:
lr_mult : ضریب نرخ یادگیری است: یعنی در نرخ یادگیری شبکه ضرب میشود تا نرخ یادگیری این لایه بدست آید.
decay_mult: ضریب کاهش نرخ است و در ضریب کاهش نرخ شبکه ضرب میشود.
اگر lr_mult صفر باشد یعنی این لایه در یادگیری شرکت نکند.
توجه کنید 2تا param داریم که هر یک lr_mult و decay_mult دارند . اولی مربوط به وزن لایه و دومی مربوط به bias لایه می باشد.
خوب الان می تونین بگین اگر بخواهم تغییر بدم اولی رو عوض باید بکنم یا دومی رو. خودئتون بیزحمت عوض کنین بزارین دقیق بفهمم
به غیر از لایه های  انتهای شبکه بقیه رو صفر کنید. هر دوی ضرایب رو صفر کنید. اما اینکه چند لایه را غیر صفر قرار دهید رو بهتر است امتحان کنید تا ببینید در چه حالتی بهترین جواب را میگیرید.
یعنی هر دوdecay_mult و  lr_mult رو صفر کنم؟
جواب ساده : بله
+1 امتیاز

http://pirahansiah.persianblog.ir/post/27/
تعداد زیادی از مدلهای یادگیری عمیق که شبکه عصبی آموزش دیده توسط caffe هستند را می توانید از لینک زیر دانلود کنید

https://github.com/BVLC/caffe/wiki/Model-Zoo

شما می توانید با استفاده از ادیتورهای موجود شبکه هایشان را با هم مقایسه و اصلاح نمایید

همچنین می توانید با تغییرات جزئی آنها را جهت استفاده مجدد در سیستم خودتان بازآموزی نمایید

به عنوان مثال شبکه عصبی اموزش دیده درباره انواع خودروها وجود دارد ولی پراید را تشخیص نمی دهد و شما می توانید از شبکه آموزش دیده استفاده نمایید و فقط تعدادی از عکسهای پراید را برای آموزش مجدد استفاده نمایید که در نهایت شبکه شما آماده کار بر روی ماشینهای داخل ایران هم کارایی خواهد داشت

مراحل کار بدین صورت می باشد (جهت استفاده در DIGITS)

ابتدا فایل مربوطه به طراحی مدل شبکه عمیق دانلود کنید و لایه اولیه آن را به دیتای خودتان مرتبط نمایید

سپس مدلهای هر لایه را مطابق نوشته های زیر اصلاح نمایید (معمولا در اصل مدل نام لایه ها با حروف بزرگ می باشد که برای استفاده در دیجیتز نیاز به اصلاح دارد)

type: "xxxxxx"

Convolution

ReLU

Pooling

LRN

InnerProduct

Dropout

Accuracy

SoftmaxWithLoss

Softmax

در مرحله بعدی لازم است ترتیب قرار گرفتن توضیحات هر لایه به درستی نوشته شود که شامل

name

type

bottom

bottom

top

می باشد

توسط (438 امتیاز)
ویرایش شده توسط
سلام . لطفا وقتی زحمت میکشید جواب میدید. جواب رو کامل بدید. از دادن یک لینک خود داری کنید. مطالب رو کامل اینجا قرار بدید و نهایتا اخر مطلب میتونید ارجاع بدید. اینطور اگر بعدا اون لینک هم از دسترس خارج بشه جواب اینجا باقی میمونه .
لطفا این مساله رو در بقیه جوابهاتون هم لحاظ کنید.
...