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

با تشکر

دسته بندی ها

+1 امتیاز

سلام
1- میخوام یه دیتا با 3 در 5611 ویژگی رو بدم به lstm
دیتای سری زمانی هست 5611 ویژگی تو زمان 1
5611 ویژگی تو زمان 2 استخراج شدن
5611 ویژگی تو زمان 3
حالا lstm بخوام هرسه رو ببینه با توجه به تصویر زیر ورودی درست دادم یا باید کل 5611 ویژگی رو جلوی هم دیگه قرار بدم تا ببینشون(یعنی تغییر شکل بدم به 1 در 16833)؟

2- اگر درست نوشتم و هردو timestep رو میبینه ، اول کدوم یکیشون رو میبینه ؟اول دیتای داخل آرایه 0 رو میبینه بعد میره سراغ 1 ؟ میخوام بدونم lstm اول کدوم دیتا رو کامل میخونه بعد میره سراغ بعدیش ؟! میشه ترتیبشو عوض کرد!؟

3- الان این ورودی که من دادم به lstm آیا تعداد ورودی lstm سه تا هست و تعداد لایه ی lstm 1024 تا ؟!(چون lstm روی کل دیتا حرکت میکنه و حافظه داره نمیفهمم اینی که نوشتم الان سه ورودی داره با 1024 گیت و... یا 1024 تا ورودی هستن!؟

توسط (208 امتیاز)
ویرایش شده توسط

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام

1- ورودیتون باید به فرم (3,5611) باشه که خودش batch size رو هم در نظر میگیره. یعنی همینطوری که میگید ورودی رو بسازید، 3 تا استپ دارم، که هر استپ یه بردار 5611 بعدیه

2- به ترتیب از عنصر 0 شروع می کنه و تا عنصر 2 ام (خانه سوم) پیش میره، با فرض اینکه مثل قسمت 1 ، 3 تا استپ داشته باشیم. هر بار هم کل بردار 5611 تایی رو می ده به LSTM که 1024 تا unit داره. اگه بخواید ترتیبش رو عوض کنید، خودتون باید داده های ورودی رو دست کاری کنید که به ترتیب دلخواه شما چیده بشن
حالا اینکه چی بر می گردونه بسته به اینه که return_sequence رو true کردید یا نه
مثلا توی حالتی که الان نوشتید، از استپ صفر شروع می کنه می ره تا آخر، و در نهایت فقط state آخر که حاصل بررسی همه دنباله هست رو می ده به لایه بعدی که همون dropout ه
تصویرش هم اینطوری میشه :

3- عدد 1024 می گه شما 1024 تا unit از نوع LSTM دارید و در کل این چیزی که نوشتید یه لایه حساب میشه. مثل اینه که بگید توی یه لایه کانولوشنی من 1024 تا فیلتر کانولوشن دارم و ربطی هم به تعداد استپ ها یا اندازه ورودی نداره و یه پارامتر که خودتون تعیینش می کنید. حواستون باشه اگه بخواید چندلایه LSTM استفاده کنید، توی مساله شما باید return sequence ه توی همه لایه های lstm به جز آخری true باشه
ورودی این 1024 تا unit هم یه بردار 5611 تایی هست طبق تعریفی که داشتید که برای 3 استپ (البته طبق چیزی که توی کد و تصویر گذاشتید 2 تا) پردازش میشه

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

توسط (1.6k امتیاز)
انتخاب شده توسط
سلام
دقیقا درست فرمودید
فقط من فکر میکردم لایه های lstm مثل کانولوشن روی داده حرکت میکنن ولی وقتی ورودی 1000 هست و لایه ی lstm 1024 تا دیگه چیزی برای حرکت روش نمیمونه(کرنل ها بیشتر از ورودی هستن)

مشکلی که دارم اینه که شدیدا overfitمیشه بعد اپوچ اول دیگه بهبودی در کار نیست
LR رو دست زدم تاثیر نداشت، دراپ اوت رو زیاد کردم ... reqularization l2قرار دادم بازم خیلی فرقی نکرد !
راه کار دیگه ای هم هست !؟(آرزو به دل موندم مدل هام تا 10 اپوچ overfit نشن!!!)
data augmentation روی دیتای اینجوری چطور میشه زد ؟!
...