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

3-5- جداسازی داده های آموزش و اعتبار سنجی
در این بخش %75 از کل داده ها را برای آموزش شبکه و %25 را برای اعتبار سنجی داده ها در نظر میگیریم.
نکته: در کاربردهای صنعتی شبکه عصبی، بین اعتبارسنجی و تست تفاوت وجود دارد. اگر دادههای مورد استفاده در قسمت تست از همان دادگان یا از همان مجموعه باشند در حقیقت شبکه را اعتبارسنجی میکنیم اما اگر داده ها از دو مجموعه آماری مختلف باشند مثلا از دو کشور مختلف ما برای تعمیم دادن شبکه، شبکه را با دادههای مجموعه دوم تست می کنیم.
در ادامه کد های مربوط به جداسازی دادههای آموزش و اعتبارسنجی را مشاهده می کنید.

در این کد train_rate مرز جدا کننده این دو مجموعه است. و x مربوط به ویژگی ها یا همان ورودیهای شبکه است و y مربوط به خروجی های شبکه عصبی میباشد.
3-6- تعیین ساختار شبکه عصبی
حال نوبت به پیکره بندی شبکه و تعیین تعداد لایهها و نرونهای هر لایه رسیده است. شبکه عصبی مورد استفاده ما یک شبکه عصبی 3 لایه است که با در نظر گرفتن لایه ورودی یک شبکه عصبی 4 لایه است. دقت کنید که وقتی میگوییم یک شبکه تک لایه است لایه ورودی را در نظر نگرفته و فقط لایه پنهان را شمارش میکنیم. در شبکهای که قصد پیادهسازی آن را داریم، یک لایه ورودی و دو لایه پنهان و یک لایه خروجی داریم. تعداد نرونها در لایه ورودی را برابر با تعداد ویژگی ها یعنی 11 قرار می دهیم. تعداد نرونها در لایه دوم و سوم را به دلخواه تعیین کرده و مثلا 8 و 4 قرار می دهیم. تعیین تعداد این نرونها کاملا تجربی است و با سعی و خطا بهترین تعداد مشخص میشود. تعیین تعداد نرون های لایه خروجی بسته به تعداد دستههای مورد نظر دارد مثلا اگر بخواهیم فقط دودسته دانشجو ضعیف یا قوی را تعیین کنیم یک نرون در نظر می گیریم که مقدار 1 نشان دهنده دسته دانشجویان قوی و مقدار 0 نشان دهنده دانشجویان ضعیف می باشد.


در بخش بعد به تعیین مقدار وزنهای هر لایه و بایاس پرداخته میشود.
