Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/ustmbir/domains/deeplearning.ir/public_html/qa/qa-include/qa-base.php on line 1177
Pre-Training CNNs Using Convolutional Autoencoders - پرسش و پاسخ یادگیری عمیق
به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

سلام دوستان
یکسری ابهام برای pre-train کردن cnn با Autoencoders برای من وجود داره .اینکه بعد از ترین کردن Autoencoder وزن کدوم لایه هارو باید برای ترین cnn استفاده کرد و اینکه ایا معماری شبکه ی cnn باید با قسمت انکودر یکسان باشه یا اینکه میشه فقط چند لایه ی اول cnn با انکودر یکسان باشه؟
ممنون میشم اگر کسی در این زمینه اطلاع داره راهنمایی کنه.

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

1 پاسخ

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

سلام.
لینک زیر خیلی خوب در مورد اتوانکودر و کاربردهاش گفته همراه با کد keras :

https://blog.keras.io/building-autoencoders-in-keras.html

برای حالت های مختلف کدش رو گذاشته از جمله کانولوشنی. حتما لینک بالا قسمت کانولوشن رو کدش رو نگاه کنید.
ولی در مورد سوالتون: شما میتونید فقط از چند لایه اول انکودر استفاده کنید. کلا شما برای هر مدلی که از قبل وزنهاش ترین شده میتونید وزنهای لایه های دلخواه رو برای مدل جدید استفاده کنید (برای initialize). فقط باید معماری لایه هایی که میخواهید وزناش رو استفاده کنید در هر دو شبکه یکسان باشه. مثلا اگه قسمت انکودر شما 5 لایه داره شما میتونید از وزنهای دو لایه اول برای initialize کردن شبکه cnn (دو لایه اولش) استفاده کنید. یا اگه دوست دارید میتونید از از کل وزنهای 5 لایه انکودر استفاده کنید (فقط باید معماری لایه های مشابه یکسان باشه).

توسط (540 امتیاز)
انتخاب شده توسط
ممنون از پاسختون . فقط یک سوال برای این کار باید وزن هرلایه ی انکودر رو به صورت مجزا سیو کنم ؟
میشه برای پیاده سازیش هم راهنمایی کنید.
ممنون
شما فرض کنید مدلی که سیو کردید تو کراس اسمش هست model و مدلی جدیدی که میخواهید ترین کنید و برای initialize کردنش از وزنهای مدل model استفاده کنید اسمش هست int_model . با دستور زیر تو کراس میتونید وزنهای لایه خاص از int_model رو با وزنهای model آغاز کنید:
int_model = Sequential()
int_model.add(Convolution2D(64, 3, 3, activation='relu',
                            border_mode='same', name='conv1',
                            input_shape=input_shape,
                            weights=model.layers[0].get_weights()))

میتونید یه نمونه از کد نسبتا مشابه رو تو لینک زیر مشاهده کنید:
https://github.com/axon-research/c3d-keras/blob/master/c3d_model.py

همچنین لینک زیر رو نگاه کنید:
https://faroit.github.io/keras-docs/1.2.2/layers/convolutional/
مچکرم خیلی لطف کردین.
...