توجه: این پست به مرور زمان تغییر خواهد کرد.
با سلام
در این پست میخوام خیلی خلاصه و مفید در مورد شروع کار با google colab صحبت کنم.
گوگل کلب یا google colab یه سرویس رایگان ابری هست که توسط گوگل در اختیار علاقمندان به برنامه نویسی قرار داده شده تا بتونن رایگان از GPU گوگل برای اجرای برنامه های هوش مصنوعی استفاده کنن.
با گوگل کلب می تونیم:
مهارت های برنامه نویسی خودمون (فعلا فقط زبان پایتون) را افزایش بدیم.
برنامه های یادگیری عمیق را با استفاده از کتابخانه های محبوبی مانند keras، TensorFlow، PyTorch و OpenCV توسعه دهیم.
از آنجاییکه گوگل کلب فایل ها را در گوگل درایو ذخیره می کنه، ابتدا وارد گوگل درایو می شیم و نام کاربری و کلمه عبور جیمیل خود را وارد می نماییم. بر روی گزینه New کلیک می نماییم و یک folder به نام app برای فایل های گوگل کلب ایجاد می نماییم.

در این مرحله به پوشه app که همین الان ایجاد کردیم میریم، روی صفحه کلیک راست می کنیم و روی گزینه colaboratory یا google colaboratory کلیک می کنیم.
توجه کنید اگر شما گزینه colaboratory را در منو نمی بینید، روی Connect more app کلیک کنید و از صفحه جدیدی که باز میشه colaboratory را انتخاب و در صفحه جدیدی که باز میشه روی install کلیک کنید. با این کار کلب برای شما فعال میشه و اگر یک بار دیگه رو صفحه کلیک راست کنید می تونید گزینه colaboratory را ببینید.

حالا یک فایل در Notebook گوگل با پشوند ipynb برای شما ایجاد میشه. حالا میتونید کدنویسی به زبان پایتون رو شروع کنید.

به صورت پیشفرض اسم notebook ایجاد شده Untitled0.ipynb هست، میتونید خیلی راحت روی اسم فایل کلیک کنید و اسم مورد علاقه خودتون را تایپ کنید.
حالا از منوی Runtime گزینه Change runtime را انتخاب کنید و در پنجره ای که باز میشه در قسمت Hardware accelerator گزینه GPU را انتخاب و save کنید.

اگر به گوشه بالای سمت راست notebook نگاه کنیم یه گزینه connect وجود داره. این گزینه نشون میده که ما فعلا به GPU گوگل وصل نیستیم چون هنوز برنامه ای اجرا نکردیم. بعد از اجرای اولین برنامه حالت این گزینه تغییر می کنه.

گوگل کلب خودش به صورت خودکار یک سلول برای ما ایجاد کرده که می تونیم اولین دستورات پایتون خودمون را بنویسیم و اجرا کنیم. مثلا من دستور print زیر را نوشتم و روی دکمه اجرای مشکی رنگ کنار سلول کلیک کردم (می شه برای اجرای یک سلول از کلید Shift+Enter هم استفاده کرد) تا دستورم اجرا بشه.

بعد از اجرای اولین دستور، اون گزینه Connect بالای سمت راست صفحه به Connected تغییر می کنه. این یعنی ما الان به GPU گوگل وصل هستیم.
در هر سلول notebook میتونیم یک یا چند خط دستور پایتون بنویسیم.
برای ایجاد سلول جدید کافیه روی Code کلیک کنید یا دکمه های Ctrl+M+B را فشار بدید.
برای اجرای هر سلول باید کلید های shift+enter را فشار بدیم یا روی دکمه اجرای مشکی رنگ کنار سلول کلیک کنیم تا اون سلول اجرا بشه. پس من دیگه این نکته را تکرار نمی کنم.
اولی این نکته را بگم که برای نوشتن برنامه های یادگیری عمیق می تونیم از کتابخانه های آماده پایتون مثل tensorflow ، keras یا pytorch استفاده کنیم. من با pytorch کار نکردم و نمی خوام در موردش صحبت کنم.
اما Tensorflow شاید مهمترین کتابخانه برای نوشته برناه های یادگیری عمیق باشه که توسط گوگل ارائه شده. چون کارکردن با tensorflow کمی سخته، برنامه نویس ها یک کتابخانه جدید به نام keras نوشتند که درواقع یک wrapper روی tensorflow هست و خیلی ساده تره.
کتابخانه keras خودش چند تا دیتاست مختلف داره که معمولا برای آموزش مورد استفاده قرار میگیرن. یکی از این دیتاست ها fashion_mnist هست که شامل تصاویر لباس های مختلف با label هست. در این مثال میخواهیم یک classifier بنویسیم که با این دیتاست آموزش ببینه و وقتی یه تصویر جدید را بهش بدیم بتونه بگه این تصویر چی هست.
خب معمولا در اولین سلول برنامه باید کتابخانه های مورد نیاز خودمون را با دستور import به برنامه وارد کنیم. دستورات زیر را در اولین سلول می نویسیم و کلید shift+enter را فشار میدیم.

حالا دیتاست را با دو دستور زیر دانلود می کنیم و به دو دسته train و test تقسیم می کنیم.

دیتاست fashion_mnist تصاویر را به ده دسته گروهبندی می کنه. اسامی این دسته ها را در آرایه زیر ذخیره می کنیم.

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

ما میخواهیم تصاویر ما scale کوچکتری داشته باشن مثلا مقدار هر پیکسل بین 0 تا1 باشه. بخواطر همین در هر دو مجموعه داده های آموزشی و تستی مقدار پیکسل ها را به 255 تقسیم می کنیم.

برای اینکه مطمین بشیم که scaling به درستی انجام شده، کد زیر را اجرا می کنیم و 25 تصویر اول را می بینیم.

خب در این مرحله لایه های شبکه عصبی مون را تعریف می کنیم و مدل را می سازیم. از آنجاییکه هدف از این مقاله آموزش شبکه های عصبی نیست، من از ساده ترین شبکه ممکن استفاده می کنم.

منظور از کامپایل کردن مدل این هست که باید تابع optimizer و loss و metric را مثل زیر مشخص کنیم.

برای آموزش مدل، تابع fit را فراخوانی می کنیم و داده های آموزشی را به شبکه می دیم. من اینجا از 10 epoch استفاده کردم. اطلاعات هر epoch بعد از اجرای سلول در خروجی نوشته میشه.

برای ارزیابی مدل از دستور زیر استفاده می کنیم. همونطور که می بینید دقت مدل 0.88 هست.

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

کد زیر نشون میده که با احتمال دقت 0.99 تصویر کفش را برای ما پیش بینی کرده.

از منوی File با انتخاب گزینه های save و یا download می تونیم فایل notebook ایجاد شده را ذخیره یا دانلود کنیم.