پیاده سازی پروژه محور شبکه عصبی مصنوعی با پایتون
موسسه پایا پروژه به عنوان متصدی انجام پروژه های برنامه نویسی شبکه عصبی پایتون وظیفه ی خود می داند که در راستای آموزش شبکه عصبی گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی شبکه عصبی با پایتون مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.
کد های پیادهسازی شبکه عصبی
در قسمت قبل ابتدا با روش min-max نرمالسازی انجام شد و دادگان آموزش و اعتبارسنجی جدا و مشخص کردیم و در آخر تعداد لایهها و نرونهای هر لایه را تعیین کردیم. در مطالب پیشرو ابتدا وزنهای هر نرون مشخص میشود و پسس الگوریتم پیش رو و پس انتشار خطا پیادهسازی میشوند.
3-6-مشخص کردن وزنها
مقادیر وزن نرونهای لایه اول تا سوم با استفاده از اعداد تصادفی تعیین میکنیم.

در اینجا با تابع uniform ماتریس ها یا آرایه های دوبعدی با توجه به تعداد نرونهای هر لایه ایجاد کردیم. یعنی w1 یک آرایه دو بعدی با 8 سطر و 11 ستون از اعداد تصادفی در بازه [10+و10-] می باشد.
که 8 تعداد نرونهای لایه دوم و 11 تعداد نرونهای لایه اول است.
3-7- توابع فعال ساز نرونها
تابع فعال ساز نرونها را سیگموئید تک قطبی در نظر میگیریم و برای تمام نرون ها از این تابع استفاده میکنیم.

خب تا این قسمت ساختار شبکه، وزنها و تابع فعالسازی مشخص شدند و حال نوبت به تعریف الگوریتم پیشرو شبکه است.
4- الگوریتم پیشرو
الگوریتم پیشرو یا feedforward را به صورت یک تابع تعریف می کنیم که ورودیهای شبکه عصبی را دریافت کرده در وزنهای لایه اول ضرب کرده و به حاصل ضرب تابع سیگوئید را اعمال کرده تا خروجی لایه اول مشخص شود . سپس همین روند تا لایه خروجی ادامه پیدا می کند. برای پیاده سازی ضرب ماتریسی از تابع dot استفاده میکنیم.
نکته: در ضرب ماتریسی باید به هماهنگ بودن ابعاد ماتریسها توجه شود در غیر اینصورت خطا میدهد. مثلا در کد زیر که ابتدا ورودیهای شبکه درماتریس وزن w1 ضرب میشوند، این خطا وجود دارد چون ورودی شبکه یک ماتریس(11*1) و ماتریس وزن w1 (11*8) میباشد.برای رفع این خطا ماتریس w1 را باکد (w1.T)ترانهاده می کنیم.
در نهایت y1,y2,y3 به عنوان خروجیهای شبکه برگشت داده میشوند.

5- الگوریتم پس اتشار خطا
بعد از اجرای الگوریتم پیشرو حال نوبت به الگوریتم پس انتشار میشود که به صورت تابع تعریف میشود. در الگوریتم پس انتشار خطا شبکه با محاسبه مشتق تابع فعالساز یعنی مشتق تابع سیگموئید تک قطبی، آموزش میبیند. ورودی تابع پس انتشار ، خروجی الگوریتم پیشرو میباشد. فرمول محاسبه مشتق در کد یه صورت کامنت ذکر شده است.

حال باید تصمیم بگیریم که با دادههای آموزش چند بار روند آموزش را تکرار کنیم. یعنی مثلا اگر 20 داده آموزش داریم با مشخص کردن تعداد تکرار آموزش مثلا 10 ، شبکه 10 بار با همان 20 داده آموزش ببیند.
