ویرگول
ورودثبت نام
AliFallahi
AliFallahi
خواندن ۱ دقیقه·۵ سال پیش

منظور از Vectorization (بردار سازی) در شبکه های عصبی چیست؟

 وکتورایز vectorization استفاده از بردارسازی  در شبکه های عصبی
وکتورایز vectorization استفاده از بردارسازی در شبکه های عصبی


https://www.aparat.com/v/xmtkp


یکی از نکات بسیار مهم در مباحث مربوط به یادگیری عمیق (Deep learning) و شبکه های عصبی (Neural networks) چگونگی پیاده سازی مدل ریاضیاتی مورد نظر است.

رایج ترین توصیه برای افزایش سرعت برنامه نوشته شده و به طور کلی بهبود سطح نتیجه فاز پیاده سازی، پرهیز از به کار بردن حلقه های For به ویژه حلقه های For تو در تو تا حد ممکن است. راه حل این مسئله استفاده از تکنیک های Vectorization است که در صورت ترجمه لغوی به «بردارسازی» ترجمه می شود.

در این مطلب، به بررسی تفاوت زمان مورد نیاز برای انجام ضرب داخلی دو ماتریس با استفاده از شیوه های زیر می پردازیم.

  1. For loop
  2. Vectorization

معادله کلی دررگرسیون لجستیک (به انگلیسی: Logistic regression) به صورت زیر است:

معادله رگرسیون لجستیک
معادله رگرسیون لجستیک

در این فرمول، W و X هر یک ماتریس هایی هستند که می توانند شامل تعداد زیادی درایه عددی باشند.

مثال: فرض کنید W و X دارای مقادیر زیر هستند:

برای محاسبه رگرسیون لجستیک، ابتدا ترانهاده ماتریس W را به دست می آوریم:

و طبق فرمول ارایه شده برای لجستیک رگرشن، در ادامه خواهیم داشت:

پس حاصل نهایی ضرب داخلی دو ماتریس W و X در این مثال برابر با 58 است.


For loop

در حالت عادی برای پیاده سازی این روش در پایتون، از یک حلقه for استفاده می کنیم:

a=[1,2,3] b=[7,9,11] c=0 for i in range(len(a)): c+=a[i]*b[i] print(c)

Vectorization

در حالت وکتورایز شده از کتابخانه numpy استفاده می کنیم:

import numpy as np a = [1,2,3] b = [7,9,11] c = 0 c = np.dot(a,b) print(c)

همانطور که در ویدیوی این پست مشاهده می کنید اگر تعداد درایه های ماتریس ها زیاد باشد، برای اجرای حلقه for به زمان بسیار زیادتری نیاز است.


رگرسیون لجستیکشبکه عصبییادگیری عمیقبردارسازیVectorization
آنچنان رفتم كه خود می خواستم
شاید از این پست‌ها خوشتان بیاید