مقدمه‌ای بر شبکه‌های عصبی و چارچوب Keras (کراس)

برای اجرای این مبحث نیاز به نصب کتابخانه کراس (Keras) دارید. برای نصب این کتابخانه میتوانید لینک زیر را مطالعه کنید.

http://blog.class.vision/1396/12/installing-keras-with-tensorflow-backend/

در صورتی که تمام کتابخانه‌های مورد نیاز شما نصب باشد سلول زیر باید بدون مشکل اجرا شود.
 برای اینکه موقع اجرای کدها دقیقا نتایج سر کلاس را بتوانید مشاهده کنید لازم است از تابع seed برای گرفتن اعداد رندم استفاده کنید:

لود مجموعه داده (dataset)

پیش‌پردازش داده‌ها برای Keras

ابتدا تابعی ساده تعریف کرده ایم که ابعاد، نوع داده ای و اطلاعات دیتاست لود شده را چاپ کند.
این اطلاعات را قبل و بعد از پیش‌پردازش داده ها چاپ خواهیم کرد تا متوجه تغییرات بشویم!

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

x_train و x_test به فرمت لیست ساده است به همین دلیل ما ان ها را به کمک np.array به  فرمت  آرایه‌های نامپای یا ndarray  تبدیل کردیم و  y_train و y_test نیزبه فرمت لیست ساده هستند که ما باتابع keras.utils.to_categorical به شکل  یک وکتور در نظر میگیریم  که درهرخانه اش یک برچسپ 10تایی است که بسته به مقدار  y_train و y_test ان لیبل یک وبقیه خانه ها صفر هستند به اصطلاح   one-hot-encoding می گویند.

با فراخوانی تابع ساده ای که قبلاتعریف کردیم میتوانیم ابعاد، نوع داده ای و اطلاعات دیتاست لود شده  قبل وبعد از processرا چاپ کنیم

میبینیم که [y_train [0پیش از پردازش مقدار 6را داشته وبعداز پردازش به یک وکتور که برجسپ خانه ی 6 ام ان یک است تبدیل شده است.

 

آخرین گام پیش‌پردازش تبدیل داده‌ها به float32 و چون دیتا ها بین مقادیر 0تا255هستند با تقسیم x_train و x_testمقادیر را به مقدار بین 0 و  1نرمال سازی  میکنیم.

تعریف معماری مدل (model architecture)

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

خط اول کد : نوع modelخود را ()Sequential  قرار میدهیم چون میخواهیم شبکه های عصبی مان به ترتیب پشت هم قرار بگیرند و غیر بازگشتی باشند(یعنی امکان بازگشت ازیک لایه نورون جلوتر به لایه نورون پیشین نباشد).

خط دوم کد:حال به  modelتعریف شده یک لایه با تابع add  اضافه میکنیم چون لایه اول را میخواهیم تعریف کنیم باید تعدادنورون ورودی وخروجی را مشخص کنیم.تابع داخلی که Denseهست میگوید این لایه هارا به هم بچسبان و64 که پارامتر اول تابع است  تعداد نورون های خروجی رامشخص میکند پارامتر دوم رادر یادداشت های قبلی توضیح داده شده است و  activation=’relu’قراردادیم و درنهایت  input_dim نیز تعداد نورون های ورودی رامشخص میکند.

خط سوم کد:لایه دیگری تعریف کردیم که به لایه قبلی چسبیده وتعدادنورون های خروجی 10است وبرای نرمال سازی خروجی activation=’softmax’قراردادیم وشبکه عصبی را با سه لایه جمع  کردیم.

Compile model

بعداز مشخص کردن معماری شبکه عصبی مان با دستورmodel.compileمدل ساخنه شده را کمپایل میکنیم این تابه از سه پارامتر تعیین شده که:

‘ loss= ‘ categorical_crossentropy:تابع هزینه ومعیار بد بودن شبکه را تعیین میکندو بهترین loss را انتخاب کردیم.

optimizer=’rmsprop’برای بهینه کردن تابع loss از optimizerاستفاده میکنیم.

metrics=[‘accuracy’]گزارشی که میدهیم را برمبنای accuracyقرارمیدهیم(قبلا metricرا دریادداشت های قبلی دوستان توضیح داده اند

 

 

 

 

فوتر سایت

اسلایدر سایدبار

درباره ما

درباره ما

ما گروهی از دانشجویان رشته کامپیوتر دانشگاه شهید رجایی هستیم که به راهنمایی و تدریس استاد علی‌رضا اخوان‌پور به دنیای یادگیری عمیق پا گذاشتیم و دوست داریم چیزهایی که در این مسیر یادمی‌گیریم رو به اشتراک بذاریم.

شبکه های اجتماعی