چگونه با google colab کار کنیم؟

توجه: این پست به مرور زمان تغییر خواهد کرد.با سلامدر این پست میخوام خیلی خلاصه و مفید در مورد شروع کار با google colab صحبت کنم.هدف: آموزش شروع کار با google colabآموزش ایجاد یک شبکه یادگیری عمیق ساده با kerasگوگل کلب یا google colab یه سرویس رایگان ابری هست که توسط گوگل در اختیار علاقمندان به برنامه نویسی قرار داده شده تا بتونن رایگان از GPU گوگل برای اجرای برنامه های هوش مصنوعی استفاده کنن.با گوگل کلب می تونیم:مهارت های برنامه نویسی خودمون (فعلا فقط زبان پایتون) را افزایش بدیم.برنامه های یادگیری عمیق را با استفاده از کتابخانه های محبوبی مانند keras، TensorFlow، PyTorch و OpenCV توسعه دهیم.شروع کار با گوگل کلباز آنجاییکه گوگل کلب فایل ها را در گوگل درایو ذخیره می کنه، ابتدا وارد گوگل درایو می شیم و نام کاربری و کلمه عبور جیمیل خود را وارد می نماییم. بر روی گزینه New کلیک می نماییم و یک folder به نام app برای فایل های گوگل کلب ایجاد می نماییم.ایجاد پوشه جدید در گوگل درایودر این مرحله به پوشه app که همین الان ایجاد کردیم میریم، روی صفحه کلیک راست می کنیم و روی گزینه colaboratory یا google colaboratory کلیک می کنیم. توجه کنید اگر شما گزینه colaboratory را در منو نمی بینید، روی Connect more app کلیک کنید و از صفحه جدیدی که باز میشه colaboratory را انتخاب و در صفحه جدیدی که باز میشه روی install کلیک کنید. با این کار کلب برای شما فعال میشه و اگر یک بار دیگه رو صفحه کلیک راست کنید می تونید گزینه colaboratory را ببینید.ایجاد اولین فایل در گوگل کلبحالا یک فایل در Notebook گوگل با پشوند ipynb برای شما ایجاد میشه. حالا میتونید کدنویسی به زبان پایتون رو شروع کنید.اولین Notebookبه صورت پیشفرض اسم notebook ایجاد شده Untitled0.ipynb هست، میتونید خیلی راحت روی اسم فایل کلیک کنید و اسم مورد علاقه خودتون را تایپ کنید.انتخاب GPUحالا از منوی Runtime گزینه Change runtime را انتخاب کنید و در پنجره ای که باز میشه در قسمت Hardware accelerator گزینه GPU را انتخاب و save کنید.انتخاب GPUاگر به گوشه بالای سمت راست notebook نگاه کنیم یه گزینه connect وجود داره. این گزینه نشون میده که ما فعلا به GPU گوگل وصل نیستیم چون هنوز برنامه ای اجرا نکردیم. بعد از اجرای اولین برنامه حالت این گزینه تغییر می کنه.هنوز Connect نیستیمنوشتن اولین برنامهگوگل کلب خودش به صورت خودکار یک سلول برای ما ایجاد کرده که می تونیم اولین دستورات پایتون خودمون را بنویسیم و اجرا کنیم. مثلا من دستور print زیر را نوشتم و روی دکمه اجرای مشکی رنگ کنار سلول کلیک کردم (می شه برای اجرای یک سلول از کلید Shift+Enter هم استفاده کرد) تا دستورم اجرا بشه.اجرای اولین دستوربعد از اجرای اولین دستور، اون گزینه Connect بالای سمت راست صفحه به Connected تغییر می کنه. این یعنی ما الان به GPU گوگل وصل هستیم.در هر سلول notebook میتونیم یک یا چند خط دستور پایتون بنویسیم.اضافه کردن سلول جدیدبرای ایجاد سلول جدید کافیه روی Code کلیک کنید یا دکمه های Ctrl+M+B را فشار بدید.اجرای یک سلول برای اجرای هر سلول باید کلید های shift+enter را فشار بدیم یا روی دکمه اجرای مشکی رنگ کنار سلول کلیک کنیم تا اون سلول اجرا بشه. پس من دیگه این نکته را تکرار نمی کنم.نوشتن یک classifier با keras برای دسته بندی کردن تصاویراولی این نکته را بگم که برای نوشتن برنامه های یادگیری عمیق می تونیم از کتابخانه های آماده پایتون مثل 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برای اینکه مطمین بشیم که scaling به درستی انجام شده، کد زیر را اجرا می کنیم و 25 تصویر اول را می بینیم.25 تصویر اول پس از پیش پردازشساخت مدلخب در این مرحله لایه های شبکه عصبی مون را تعریف می کنیم و مدل را می سازیم. از آنجاییکه هدف از این مقاله آموزش شبکه های عصبی نیست، من از ساده ترین شبکه ممکن استفاده می کنم.مدلکامپایل مدلمنظور از کامپایل کردن مدل این هست که باید تابع optimizer و loss و metric را مثل زیر مشخص کنیم.کامپایلآموزش مدلبرای آموزش مدل، تابع fit را فراخوانی می کنیم و داده های آموزشی را به شبکه می دیم. من اینجا از 10 epoch استفاده کردم. اطلاعات هر epoch بعد از اجرای سلول در خروجی نوشته میشه.آموزش مدلارزیابی مدلبرای ارزیابی مدل از دستور زیر استفاده می کنیم. همونطور که می بینید دقت مدل 0.88 هست.ارزیابی مدلپیش بینی با استفاده از مدلکد زیر برای نمایش تصاویر و پیش بینی ها استفاده میشه. ین کد را بنویسید و اجرا کنید.نمایش تصاویرکد زیر نشون میده که با احتمال دقت 0.99 تصویر کفش را برای ما پیش بینی کرده.پیش بینیذخیره یا دانلود notebookاز منوی File با انتخاب گزینه های save و یا download می تونیم فایل notebook ایجاد شده را ذخیره یا دانلود کنیم.منابع https://www.tensorflow.org/tutorials/keras/classification https://towardsdatascience.com/getting-started-with-google-colab-f2fff97f594c