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

با تشکر

دسته بندی ها

0 امتیاز

سلام
من قصد دارم که یک مجموعه ای از وزن ها را در شبکه عصبی کانولوشن در pytorch مقدار صفر قرار دهم و این مقدار را فریز (freeze) کنم و نگذارم گرادیان مقدار آن را تغییر دهد. برای این منظور مقدار وزن را صفر قرار دادم ولی تغییر کرده و از حال صفر خارج می شود.
برای این کار دو تابع نوشته ام که یکی مدل را به vector تبدیل می کند و دیگری vector را به مدل کانولوشن برمیگرداند. کد نوشته شده به صورت زیر است:

vector = model2vector(model)
if epoch>0:

 vector[1000:2000] = 0
 model = vector2model(model,Vector)

batch_data, batch_target = Variable(x.cuda()), Variable(target.cuda())

optimizer.zero_grad()

output=model(batch_data)
loss=criterion(output,batch_target)
loss.backward()

optimizer.step()

در خط اخر حاصل عملیات گرادیان به شبکه اعمال می شود و بسیاری از مقادیر صفر شده تغییر می کنند. به چه صورت می توانم این مشکل را بر طرف کنم؟

ممنون میشم راهنمایی کنید

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

لطفا وارد شده یا عضو شوید تا بتوانید سوال بپرسید

...