آموزش گوگل کولب
بهنام خدا، سلام… در این پست میخواهم شما را با سرویس گوگل کولب آشنا کنم. اگر با یادگیری عمیق سروکار دارید، احتمالا نام آن را شنیدهاید. تلاش کردهام پست آموزش گوگل کولب یک آموزش مقدماتی و کاربردی باشد. امیدوارم، این آموزش برای دوستانی که با کولب آشنایی کمی دارند، مفید باشد. با هوسم همراه باشید…
انگیزه پست آموزش گوگل کولب
گوگل کولب یک سرویس ابری است که به ما سختافزار با GPU رایگان میدهد. هزینه خرید یک سختافزار مناسب برای کار در هوش مصنوعی در داخل کشور بسیار سنگین است. در این شرایط خوشحالکننده است که سرویس رایگانی وجود دارد که به راحتی به آن دسترسی داریم و میتوانیم کار کنیم. همچنین، متوجه شدم که بسیاری از دانشجویان یا از این سرویس استفاده نکردهاند و یا با امکانات آن آشنا نیستند. برهمین اساس، تصمیم گرفتم آموزش گوگل کولب را بنویسم. امیدوارم بتوانم به شما در استفاده از این نعمت بزرگ کمک کنم. برای ورود به گوگل کولب، اینجا کلیک کنید.
پیش نیاز پست آموزش گوگل کولب
همانطور که گفتم، گوگل کولب یک سرویس ابری برای هوش مصنوعی بهصورت خاص یادگیری عمیق است. بنابراین، مثالهای این پست ممکن است شامل کدهای پایتونی، مباحث شبکه عصبی، یادگیری ماشین، فریمورک پایتورچ، تنسورفلو و سایر مباحث مرتبط باشد. امیدوارم با این مباحث آشنا باشید تا با مثالها بهتر ارتباط برقرار کنید.
سناریوی من برای آموزش گوگل کولب
تصور کنید شما یک سیستم لینوکسی با GPU دارید، چقدر کاربرد دارد؟ سوال عجیبی پرسیدم! طبیعتا، بیشمار کاربرد دارد! خب، گوگل کولب هم بیشمار کاربرد دارد و نمیتوان در یک پست، کل امکانات گوگل کولب را پوشش دارد. از طرفی، ما اینجا بهنوعی با یک نرمافزار سروکار داریم. بنابراین، آموزش یک نرمافزار را پیشِ رو داریم نه آموزش کدنویسی یا تئوری… مثل آموزش Word! حالا وقتی صحبت از آموزش نرمافزار میشود، معمولا با چنین آموزشهایی مواجه میشویم که مدرس نرمافزار را باز کرده و از منوی فایل شروع میکند به توضیح دادن تکتک گزینهها، درحالیکه برای کسی که تازه میخواهد آموزش نرمافزاری مانند Word را یاد بگیرد، خیلی از امکانات موجود در منوها ضرورتی ندارد که بداند! در دوره سربازی به نیروهای کادری ICDL درس میدادم و دقیقا همین کار را میکردم! 😅 آنها هم متوجه نمیشدند و این شکلی میشدند: 😵
سناریوی من برای آموزش گوگل کولب: نوتبوک مرجع
باتوجه به چالشهای بالا، برای این آموزش دو تصمیم مهم گرفتم: اول اینکه، خودم و شما را در دریای امکانات گوگل کولب غرق نکنم. به اندازه کفایت بگویم. مطالب حرفهای را بگذاریم برای بعدها… دوم اینکه، برای شما یک سناریو طراحی کنم تا در طول آموزش گوگل کولب با آن سناریو پیش برویم. این فایل را باز کنید؛ این فایل پر از امکانات مهم گوگل کولب است. شما در این فایل موارد زیر را میبینید:
- یک مجموعه سلول (همان بلوک) کد مشاهده میکنید.
- مجموعهای سلول متن میبینید که مشابه نرمافزار وُرد عبارتهایی بهصورت بولد، ایتالیک، هایپرلینک و غیره وجود دارد.
- دانلود یک فایل وجود دارد.
- نصب پکیج با pip وجود دارد.
- ارتباط با گوگل درایو وجود دارد.
- و یکسری امکانات دیگر
در این پست آموزش گوگل کولب، میخواهم نوتبوک بالا را بسازم. این سناریوی من است و میخواهم با جلو بردن این سناریو، شما را با مهمترین امکانات گوگل کولب آشنا کنم. پس اگر نمیتوانید کارهای لیست بالا را انجام دهید، این آموزش به درد شما میخورد. برویم آموزش را شروع کنیم…
توجه درادامه، بارها به این نوتبوک ارجاع میدهم. اسم این نوتبوک را “نوتبوک مرجع” میگذارم تا راحتتر به آن آدرس بدهم.
گوگل کولب چیست؟
گوگل کولب یا Colaboratory یک محیط نوتبوک همراه با سختافزار رایگان است که تماما در فضای ابری اجرا میشود. کولب توسط شرکت گوگل با هدف فراهمسازی شرایط کار و پیشرفت در هوش مصنوعی برای همه راهاندازی شد. سرویس ابری کولب به شما امکان استفاده از پردازندههای GPU TPU قدرتمند برای اجرای الگوریتمهای هوش مصنوعی بر پایه پایتون را میدهد. با سرویس ابری کولب، شما و همکارانتان میتوانید بدون نیاز به سخت افزار قدرتمندی، روی یک پروژه کار کنید. کار با سرویس ابری کولب شبیه به Google Docs هست و همه کارها به صورت اینترنتی انجام میشود. بسیاری از کتابخانه های محبوب هوش مصنوعی مانند TensorFlow Keras PyTorch OpenCV Numpy Scikit-learn بهصورت پیشفرض در کولب نصب هست و بی دغدغه میتوانید از آنها استفاده کنید.
کلمه Colaboratory از کجا آمده و چرا گوگل چنین اسمی را انتخاب کرده است؟
کلمه Colaboratory از کجا آمده و چرا گوگل چنین اسمی را انتخاب کرده است؟ طبق تعریف ویلیام وولف در سال 1989: “Colaboratory پایگاهی بدون دیوار و محدودیت است که محققان کشورهای مختلف میتوانند تحقیقات خود را بدون توجه به موقعیت فیزیکی، همراه با سایر همکاران، دسترسی به ابزار مناسب، به اشتراکگذاری دادهها، منابع محاسباتی و دسترسی به کتابخانههای دیجیتال انجام دهند.” چه دیدگاه ارزشمندی از ویلیام وولف و چه استفاده بجایی از کلمه Colaboratory توسط گوگل… منبع: ویکیپدیا
و حالا Google Colab Pro!
اوایل راهاندازی، کولب پر از ایراد و باگ بود و ارتباط با کولب دائم قطع میشد. اما، گوگل به تدریج بهبودهای زیادی ایجاد کرد، بهگونهای که امروز این سرویس در سرتاسر دنیا محبوب و پرکاربرد شده است. گوگل در یکی دو سال اخیر از سرویس Colab Pro و + Colab Pro رونمایی کرده است. این سرویسها پولی است، اما با پرداخت هزینه بسیار کم، میتوانید امکانات بیشتر و ویژهای در اختیار داشته باشید. اطلاعات بیشتر درباره Colab Pro
برویم سراغ بخش اصلی آموزش گوگل کولب…
ساخت نوتبوک در گوگل کولب
اولین مرحله در ایجاد نوتبوک مرجع، ساخت یک نوتبوک جدید است. در این قسمت با توضیحاتی گام به گام یک فایل نوتبوک در گوگل کولب میسازم. لطفا مراحل زیر را انجام دهید.
مراحل ساخت نوتبوک در کولب
گام 1: ابتدا به سایت Colab بروید. خوشبختانه کاربران ایرانی به راحتی به این سایت دسترسی دارند. بعد از بالا آمدن سایت، احتمالا تصویر شکل 1 را خواهید دید.

گام 2: گوگل کولب باید به یک جیمیل متصل شود. خوشبختانه امروزه همه جیمیل دارند. بنابراین، مطابق شکل 1، روی گزینه Sign in کلیک کنید تا بعد از وارد کردن یوزر و پسورد جیمیلتان، کولب به جیمیل شما متصل شود.
نکته چرا باید کولب به جیمیل متصل شود؟ ساده است؛ ببینید، در بالا گفتم کولب یک سرویس ابری است و شما قرار است در این سرویس ابری کد بزنید. بسیار خب، کدها و فایلهایتان باید جایی ذخیره شود تا هر وقت خواستید به آنها دسترسی داشته باشید. پس در واقع جیمیل بهانه است و کولب به گوگل درایو (همان فضای ابری گوگل) متصل میشود.
تذکر حال که متوجه شدید، کدها و فایلهای شما قرار است در گوگل درایو ذخیره شود، یک نکته مهم را مدنظر داشته باشید. درحالت پیشفرض، گوگل 15 گیگابایت فضای رایگان در گوگل درایو به شما میدهد. حجم فایلهای نوتبوک چندان زیاد نیست، اما ممکن است بخواهید مدل و دیتاست را در درایو خود ذخیره کنید. دراینصورت، ممکن است با مشکل کمبود حجم مواجه شوید. مطمئن نیستم، اما شاید یک جیمیل جداگانه برای کولب داشته باشید، بد نباشد…
گام 3: بعد از اینکه کولب به جیمیل متصل شد، با محیطی شبیه تصویر زیر مواجه خواهید شد. یک پنجره pop-up با یکسری نوتبوک آماده وجود دارد. اما بهتر است خودمان یک نوتبوک بسازیم. روی گزینه NEW NOTEBOOK کلیک کنید. مطابق شکل 2:

حالا محیطی مانند شکل 3 بالا میآید و کولب آماده است که اولین کدتان را بنویسید:

نوتبوک زیر ذرهبین در آموزش گوگل کولب
قبل از اینکه وارد گام بعدی شویم، میخواهم کمی شما را با محیط نوتبوک آشنا کنم. در شکل 5، بخشهایی از گوگل کولب را با رنگهای مختلف به شما نشان دادهام. این بخشها عبارتنداز:
- کادر 1، شامل منوهای گوگل کولب است. گزینههای این منو چندان پیچیده نیست، اما لازم نیست الان که آشنایی زیادی با کولب ندارید، درباره آنها صحبت کنم. رفته رفته در این پست با مهمترین گزینههای این منو آشنا خواهید شد.
- کادر 2، نام نوتبوک شما را نشان میدهد. روی این بخش کلیک کنید، مشاهده میکنید که ماوس به حالت ادیتور درمیآید و به همین راحتی میتوانید نام فایل را عوض کنید. البته، نام فایل را عوض کنید، نه پسوند فایل را (ipynb.). توصیه میکنم، نام فایلهایتان را خوب و مناسب انتخاب کنید. چون این فایلها در کولب ذخیره میشود و بعد مدتی یک عالمه فایل untitled دارید و پیدا کردن فایل مدنظرتان سخت است. بسیارخب، نام فایل نوتبوک را به نام نوتبوک مرجع “introduction to google colab” تغییر دهید.
- کادر 3، نشاندهنده اتصال یا عدم اتصال به ماشین مجازی یا VM گوگل است. زمانیکه به یک VM متصل باشید، میزان مصرف رَم و هارد را به شما نشان میدهد. اما وقتیکه اتصال با VM برقرار نباشد، کلمه “connect” را نمایش میدهد. دراینحالت باید روی این کلمه کلیک کنید تا متصل شود. کمی طول میکشد و بعد متصل میشود. پس روی کلمه Connect کلیک کنید…
- کادر 4، نشاندهنده سلول است. در سلول، کد یا متن مدنظرمان را مینویسیم. بعدا بیشتر توضیح میدهم.

بسیاری از آیتمهای شکل 4 را توضیح ندادم، چون فعلا نیازی نیست. سبک برویم جلو بهتر است! بیایید آشنایی اولیه را کامل کنیم و یک کد ساده هم بنویسیم. در سلول (کادر 4)، دستور زیر را بنویسید و دکمه Play یا Run را بزنید. حالا کولب درحال اجرای کد شماست و اندکی بعد میتوانید خروجی را هم مشاهده کنید.
print('Hello Colab!')
حالا باید خروجی زیر را مشاهده کنید:
Hello Colab!
تمام! به همین راحتی شما میتوانید در کولب کد پایتون بزنید و اجرا کنید. هیچ نیازی هم به نصب پایتون نیست!
نکته ماوس را روی بخش نمایش رَم و هارد نگه دارید، یک باکس نوشته ظاهر میشود. در این باکس، میزان رَم و هاردی که تاکنون مصرف کردهاید را نشان میدهد. اما خط اول، یک نوشته مهم دارد. نوشته زیر را میبینید:
Connected to "Python 3 Google Compute Engine Backend"
کامل مشخص است که به یک موتور پردازشی گوگل با پایتون 3 متصل شدهاید. اینجا فعلا اسمی از GPU آورده نشده، اما بعدا خواهید دید…
کد ساده بالا را در موجودی بنام سلول نوشتیم. اما در نوتبوک مرجع، سلولهای متعددی داریم و بعضی از آنها شامل متن هستند نه کد. درادامه بیشتر درمورد سلول توضیح دادهام…
سلول در گوگل کولب
هر نوتبوک از مجموعهای سلول (Cell) تشکیل شده است. سلول محلی برای نوشتن کد یا متن هست. بله، در نوتبوک دو نوع سلول متن و سلول کد وجود دارد:
- سلول کد: در سلول کد، بهراحتی میتوانید کدهای پایتونی بنویسید و اجرا کنید.
- سلول متن: در سلول متن، مشابه با یک داکیومنت (ورد یا گوگل داک) میتوانید توضیح بنویسید. مثلا در نوتبوک مرجع، یک سلول متن مشاهده میکنید که شامل متن با هدینگ، بولد، ایتالیک، لینک و تصویر هم هست. یعنی نوتبوک شما میتواند یک گزارش کار آنلاین باشد!
چگونه در نوتبوک کولب سلول بسازیم؟
به چهار روش میتوان سلول ساخت. سادهترین راه این است که ماوس را به سمت محلی که در شکل زیر نشان داده شده ببرید، دو گزینه Code و Text ظاهر میشود. گفته بودم سلول میتواند کد یا متن باشد. خب مشاهده میکنید که دو گزینه Text و Code معادل با همان دوتاست. فرض کنید میخواهید سلول کد بسازید. پس کافی است روی گزینه Code کلیک کنید. مشاهده میکنید که یک سلول جدید ساخته شد. حالا یک بار دیگر یک سلول متن بسازید. شما میتوانید بینهایت سلول متن و کد بسازید.

سه راه دیگر هم برای اضافه کردن سلول کد و متن وجود دارد که در زیر خلاصه کردم:
- با استفاده از گزینه های موجود در شکل 6 میتوانید سلول متن و کد بسازید. من کمتر از این گزینهها استفاده میکنم. شاید به خاطر تنبلی!
- با استفاده از شورتکات ctrl+m b میتوانید سلول کد بسازید. حفظ کردن شورتکات از علایق من نیست، اما دوستانی دارم که همچون حرکات رونالدینیو با توپ، شورتکات میزنند!
- از گزینه Insert میتوانید سلول متن و کد بسازید. انصافا این روش خیلی دور است و سخت است ماوس را این همه راه تا آنجا ببریم!

کمی تمرین برای ساخت سلول در نوتبوک
بسیارخب قبل از ادامه آموزش گوگل کولب، بیایید برای تمرین به تعداد سلولهای متن و کد موجود در نوتبوک مرجع، سلول متن و کد خالی بسازیم. بعدا پر میکنیم!
نکته سلول متن را نمیتوان اجرا کرد. در تصاویر بالا میتوانید ببینید که دکمه Play وجود ندارد. اما در سلول کد، کدهای هر سلول از یک خط تا چند صد خط را میتوانید با Play اجرا کنید. علاوه بر گزینه Play، با استفاده از شورتکات ctrl+enter نیز میتوانید سلول را اجرا کنید.
حالا بیایید سلولها را با متن و کد طبق نوتبوک مرجع پر کنیم. اولین سلول، یک سلول متن است که یک متن ساده دارد. پس روی سلول متن دابل کلیک کنید تا به حالت ادیتور دربیاید و سپس متن زیر را بنویسید:
Introduction to Google Colab by Howsam AI Academy
در تصویر زیر از سلول متن، مجموعهای آیکون مشابه سایر ادیتورهای متن مشاهده میکنید که احتمالا استفاده از این گزینهها را بلدید. البته، در این سلول که به این گزینهها نیازی نبود. در سلولهای بعدی این آیکونها را بررسی میکنیم.

import کردن فریمورک در Google Colab مثل آب خوردن
سلول بعدی ایمپورت کردن فریمورک است. باید چند فریمورک نام آشنا را فراخوانی کنیم. خوشبختانه، بهصورت پیشفرض بسیاری از فریمورکهای محبوب و پرکاربرد در کولب نصب است. پس فارغ از هر نوع دغدغه در نصب، آنها را فراخوانی میکنیم:
import os import numpy as np import matplotlib.pyplot as plt import tensorflow as tf
وقتی صحبت از پکیجهای نصبی و آماده در کولب میکنیم، این سوال پیش میآید که چه پکیجهایی در کولب نصب است؟ در بخشهای بعدی، به شما دستوری میآموزم که بهراحتی لیست تمامی پکیجهای نصبی در گوگل کولب را مشاهده کنید. در سومین سلول از نوتبوک مرجع، یک کد ساده پایتونی وجود دارد که مربوط به فاکتوریل است. یک تابع و یک نمونه مثال از اجرای تابع… یک سلول کد بسازید و کد زیر را در آن اضافه و اجرا کنید:
def factorial(n):
fact = 1
for num in range(2, n + 1):
fact *= num
return fact
factorial(10)
این هم خروجی:
3628800
بسیارخب، سه سلول ساختیم و کمی در راستای ساخت نوتبوک مرجع گام برداشتیم. پیش از ساختن سایر سلولهای نوتبوک مرجع، میخواهم درمورد ذخیره نوتبوک در گوگل درایو صحبت کنم.
ذخیره نوتبوک در گوگل درایو
تا اینجای آموزش گوگل کولب آموختید که چگونه کولب را به گوگل درایو متصل کنید. همچنین، سلول متن و کد بسازید. کد پایتون بنویسید و اجرا کنید. حالا میخواهم به شما بیاموزم که این فایل نوتبوک را در گوگل درایو ذخیره کنید. اولا، کولب بهصورت خودکار نوتبوک شما را ذخیره میکند. اما برای ذخیره دستی، از منوی File، گزینه Save را بزنید. همچنین، میتوانید از شورتکات ctrl+s هم برای ذخیره فایل استفاده کنید.
نکته به کادر موجود در تصویر زیر دقت کنید. دراینجا، ممکن است نوشتههای مختلفی ظاهر شود. من چند نمونه را برای شما آوردهام:
- All changes saved: دراینحالت تمامی تغییرات شما در نوتبوک ذخیره شده و حتی اگر یکباره فایل نوتبوک را ببندید، اتفاق خاصی نمیافتد.
- Cannot saved changes: از این حالت بترسید، چون ممکن است مشکلی پیش آمده باشد و تغییرات شما بهصورت خودکار ذخیره نشده باشد. درنتیجه بر اثر اتفاقی بخشی از کدهایتان که ذخیره نشده بپرد! بنابراین، حتما خودتان به روش دستی فایل را ذخیره کنید.
- گاهی زمان آخرین ذخیره در این قسمت نوشته میشود. اگر از مدت زمان آخرین ذخیره زمان زیادی گذشته و تغییراتی در نوتبوک ایجاد کردهاید، بهتر است خودتان ذخیره را بزنید.
- …Saving: واضح است، نوتبوک شما درحال ذخیرهسازی است. احتمالا تغییراتی ایجاد کردهاید که کولب صلاح دانسته آنها را ذخیره کند.

اتصال گوگل درایو به کولب
در چهارمین سلول از نوتبوک مرجع، دو خط کد نوشته شده که مربوط به اتصال گوگل درایو به نوتبوک است. چگونه میتوان به گوگل درایو متصل شد و از فایلهای موجود در آن استفاده کرد؟ مثلا شاید وزنهای یک مدل یا دیتاست را در آن ذخیره کرده باشید. اصلا مگر همان ابتدای کار گوگل درایو را به نوتبوک معرفی نکردیم؟ بله، معرفی کردیم، اما صرفا برای ذخیره فایلهای نوتبوک بود. اگر در یک نوتبوک خاص بخواهید از اطلاعات موجود در گوگل درایوتان بهره ببرید، باید گوگل درایو را Mount کنید. یعنی تصور کنید، گوگل درایو شما یک هارد اکسترنال هست که هرموقع خواستید از اطلاعات موجود در آن استفاده کنید، به کامپیوتر متصل میکنید. این کار ساده است؛ کافی است بهترتیب روی گزینههای 1 و 2 در تصویر زیر کلیک کنید.

یک پنجره pop-up باز میشود و از شما میپرسد که آیا میخواهید گوگلدرایو را به نوتبوک متصل کنید؟ با تایید این سوال، شما بدون یک خط کدنویسی به گوگل درایو متصل خواهید شد!
پس آن دو خط موجود در نوتبوک مرجع برای اتصال گوگل درایو به کولب چیست؟
شما بجای زدن دو گزینه بالا، میتوانید دو خط کد زیر را بنویسید و اجرا کنید تا اتصال برقرار شود.
from google.colab import drive
drive.mount('/content/drive')
بله، این سلول در نوتبوک مرجع هم وجود دارد. حال این سلول را اجرا کنید. یک لینک و تکستباکس ظاهر میشود. شکل زیر:

روی لینک کلیک کنید؛ از شما اجازه دسترسی میخواهد، گزینه Allow را بزنید. درنهایت یک کد طولانی میدهد که آنرا کپی و در تکستباکس بالا اضافه کنید. اگر همهچیز درست پیش برود، نوتبوک شما به گوگل درایو متصل میشود و پیغام زیر را باید مشاهده کنید:
Mounted at /content/drive
نکته نیاز است کد رمز را نگه دارید؟ خیر، این یک کد موقت است که هربار نوتبوک را باز کردید و خواستید به گوگل درایو متصل شوید، گوگل به شما یک کد جدید میدهد.
نکته به علامت فلش در تصویر زیر دقت کنید؛ در این قسمت یک پوشه بهنام درایو اضافه شده که همان گوگل درایو شماست. ممکن است حتی بعد از اتصال صحیح، آنرا نبینید. مشکلی نیست، فقط کافی است روی گزینه کادر قرمز (Refresh) کلیک کنید تا ظاهر شود.

به یکی از بخشهای پرکاربرد و جالب آموزش گوگل کولب رسیدیم…
کار با سیستم عامل لینوکس در کولب (آموزش گوگل کولب)
خیلی سریع و چکشی بگویم که در همین سلول کد بهراحتی میتوانید به لینوکس دستور دهید و کارهای مبتنی بر سیستم عامل انجام دهید. برای نوشتن و اجرای دستورات bash کافی است در ابتدای هر دستور از علامت ! استفاده کنید. البته یکی دو دستور ساده هستند که نیازی به علامت ! ندارند. من قصد آموزش دستورات لینوکسی را ندارم. فقط چند دستور پرکاربرد را به شما میگویم. درادامه تعدادی از دستورات کاربردی را به شما معرفی میکنم.
دستور pwd
برای اینکه Current Directory را ببینید، باید از دستور pwd استفاده کنید. این دستور به شما میگوید شما در چه مسیری قرار دارید و به محتویات کدام پوشه یا مسیر دسترسی دارید. به این شکل:
pwd
و خروجی:
/content
نکته مسیر content/، مسیر پیشفرض است و به همان مسیری که الان در Files میبینید، اشاره دارد. چطور مطمئن شویم؟ با دستور بعدی…
دستور ls
اگر میخواهید محتویات یک پوشه یا مسیر را ببینید، باید از دستور ls استفاده کنید. به این شکل:
ls
حالا خروجی:
drive/ sample_data/
مشاهده میکنید، نوتبوک ما بهصورت پیشفرض به تمامی پوشههای موجود در Files را میتواند ببیند. پوشه drive به گوگل درایو اشاره دارد و sample_data هم نمونه دادههای اولیه است که همیشه در کولب وجود دارد. بسیارخب، دیدن مسیر جاری و محتویات یک مسیر را آموختید، اما اگر بخواهید مسیر جاری را تغییر دهید چه باید کرد؟ دستور بعدی…
دستور cd
با استفاده از دستور cd میتوانید مسیر جاری یا Current Directory را به راحتی تغییر دهید. طبق نوتبوک مرجع، ما باید وارد پوشه sample_data شویم، بنابراین باید بنویسیم:
cd sample_data
حالا بد نیست نگاهی به محتویات موجود در این پوشه بیندازیم:
ls
anscombe.json* mnist_test.csv california_housing_test.csv mnist_train_small.csv california_housing_train.csv README.md*
اگر بخواهید یک پوشه به عقب برگردید، بنویسید:
cd ..
دستور wget
بسیار خب برویم سراغ نوتبوک مرجع… با استفاده از دستور wget میتوانید فایلهای مدنظرتان را دانلود و در نوتبوک از آنها استفاده کنید. مثلا در سلول 5 از نوتبوک مرجع، دستور زیر را میبینید:
!wget http://vision.stanford.edu/Datasets/Stanford40.zip
در کد بالا، یک فایل با لینک مستقیم درحال دانلود است. حالا کافی است سلول را اجرا کنید تا صحنه زیر را ببینید:
--2020-08-27 16:07:03-- http://vision.stanford.edu/Datasets/Stanford40.zip Resolving vision.stanford.edu (vision.stanford.edu)... 171.64.68.10 Connecting to vision.stanford.edu (vision.stanford.edu)|171.64.68.10|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 308432833 (294M) [application/zip] Saving to: ‘Stanford40.zip’ Stanford40.zip 100%[===================>] 294.14M 14.2MB/s in 21s 2020-08-27 16:07:25 (13.7 MB/s) - ‘Stanford40.zip’ saved [308432833/308432833]
بله، سرعت فایل بسیار بالاست. پس از دانلود، در بخش Files میتوانید فایل دانلودی را مشاهده کنید. اگر هم ظاهر نشد، Refresh کنید.
تذکر فکر نکنید که با این روش میتوانید فایلها را سریع دانلود کنید تا در کامپیوتر خودتان داشته باشید. فایلهای دانلودی در VM گوگل ریخته میشود. حالا شما باید از VM دانلود کنید و روی کامپیوترتان بریزید. با این روش، دانلود نسبت به حالت عادی طولانیتر میشود! 😀 دیدم که میگم… 😉
دستور unzip
معمولا فایلهای دانلودی، فایلهای فشرده هستند و باید از حالت فشرده استخراج شوند. مثلا فایل بالا از نوع zip است. برای استخراج از حالت فشرده باید از دستور unzip استفاده کنید. طبق فرمایش نوتبوک مرجع، باید یک سلول بسازیم و فایل دانلودی را unzip کنیم:
!unzip Stanford40.zip
بعد از اجرای کد بالا، یک عالمه متن چاپ میشود. شاید این متنها را دوست نداشته باشید. کافی است علامت X را مطابق شکل زیر انتخاب کنید تا خروجی را حذف کند…

اگر مطابق تصویر زیر، به پوشه XML Annotations نگاهی بیندازید، فایلهای تصویری و xml مشاهده خواهید کرد. اتفاقا در فایل مرجع قرار است با این فایلهای xml کار کنیم. با چه دستوری میتوان فایلهای xml را خواند؟ قطعا راههای متنوعی برای این کار وجود دارد. من تصمیم گرفتهام این فایلهای xml را فراخوانی و تبدیل به دیکشنری در پایتون کنم. با چه دستوری؟ با دستور xml2dict… این دستور در پایتون وجود ندارد و مربوط به یک کتابخانهای است که باید در پایتون نصب کنم. پس رسیدیم به نصب یک کتابخانه یا پکیج در گوگل کولب و پایتون… پکیجهای پایتونی را با استفاده از pip install میتوان نصب کرد. درادامه به شما میگویم در گوگل کولب چگونه این کار را انجام دهید…
دستور pip
برای نصب پکیجهای پایتونی در گوگل کولب کافی است از دستور pip install! استفاده کنید. بههمین راحتی، تنها با افزودن علامت ! میتوانید از این دستور در گوگل کولب بهره ببرید. بهعنوان مثال، برای نصب پکیج xml2dict کافی است بنویسید:
!pip install xml2dict
بهراحتی نصب شد. حالا یک نمونه فایل xml طبق نوتبوک مرجع باز میکنم. طبق کد زیر:
import xmltodict
with open('/content/XMLAnnotations/applauding_001.xml') as fd:
dict_file = xmltodict.parse(fd.read())
print(dict_file)
OrderedDict([('annotation', OrderedDict([('filename', 'applauding_001.jpg'), ('folder', 'Stanford40'), ('object', OrderedDict([('name', 'person'), ('action', 'applauding'), ('bndbox', OrderedDict([('xmax', '258'), ('xmin', '28'), ('ymax', '400'), ('ymin', '57')]))])), ('size', OrderedDict([('depth', '3'), ('height', '400'), ('width', '300')]))]))])
شاید فهمیدن کد بالا کمی برای شما مشکل باشد، مهم نیست؛ چون من به دنبال آموزش خواندن فایل XML نیستم، بلکه میخواستم به شما نحوه نصب یک پیکیج جدید در کولب را آموزش دهم.
تذکر طبیعتا پکیجهای نصبی و دانلودی شما بهصورت موقت روی VM میماند و بعد از بستن کولب پاک میشوند. البته، اینطور نیست که بلافاصله فایلها پاک شوند، بلکه مدت زمانی کوتاه (شاید کمتر از 1 ساعت) در دسترس هستند، چون ممکن است بهصورت اتفاقی کولب را بسته باشید…
برای یادگیری دستورات بیشتر به این مرجع مراجعه کنید.
تاکنون 8 سلول از نوتبوک مرجع را ساختیم و مسافت زیادی از آموزش گوگل کولب را پیمودهایم. به دو سلول بعدی در نوتبوک مرجع نگاهی بیندازید. یک سلول متن و کد داریم. سلول متن پر از نوشته به شکلهای مختلف است. سلول کد هم شامل آموزش یک شبکه عصبی کانولوشنی است. ابتدا برویم سلول متن را بسازیم تا بیشتر با امکانات ادیتور گوگل کولب و نوتبوک آشنا شوید…
Markdown در گوگل کولب (آموزش گوگل کولب)
یک سلول متن بسازید و متن این لینک را کامل در آن اضافه کنید.
در ادامه این بخش از آیکونهای تصویر زیر استفاده خواهم کرد. حالا باید مطابق نوتبوک مرجع، تغییراتی در متن بالا ایجاد کنیم. برای تمام موارد زیر، یک مثال در نوتبوک وجود دارد، بنابراین بعد از خواندن هربخش سلول 9 در نوتبوک مرجع را به دقت نگاه کنید. سپس، طبق نوتبوک مرجع، تغییرات لازم روی سلول متن بالا ایجاد کنید.

Title در نوتبوک
اولین عبارت باید از متن معمولی به یک هدینگ تبدیل شود. برای این کار کافی است از آیکون شماره 1 یا T (مخفف Title) استفاده شود. نکته جالب ادیتور اینجاست که در بخش سمت راست، میتوانید خروجی تغییرات را مشاهده کنید. اما دقت کنید، بعد از فشردن کلید T تنها یک # قبل از متن اضافه میشود. بله، حتی اگر از آیکون T استفاده نکنید، میتوانید با گذاشتن یک # متن معمولی را به یک تایتل عوض کنید.
حالا شما یک تایتل دارید. یک بار دیگر آیکون T را بزنید؛ حالا دو # اضافه شده و سایز تایتل هم کمی کوچکتر میشود. در واقع میتوانیم بگوییم که با دو # ما یک h2 داریم. اگر یک بار دیگر آیکون T را بزنید، سه # اضافه میشود و بازهم سایز متن کوچکتر میشود. حالا یک h3 داریم. یک بار دیگر آیکون T را بزنید؛ تبدیل به متن معمولی شد و همه #ها پاک شد. پس با گذاشتن 1 الی 3 # میتوانیم تایتل h1 h2 h3 بسازیم.
نکته اگر بخواهیم از # استفاده کنیم و هدفمان این نباشد که تایتل بگذاریم، چه باید بکنیم؟ در اینحالت باید از #\ استفاده کنید.
Bold در نوتبوک
برای Bold کردن یک کلمه یا عبارت، کافی است از آیکون شماره 2 یا B استفاده کنید. مشاهده میکنید که با انتخاب این گزینه، کلمه مدنظر در داخل دو ** قرار میگیرد. بنابراین، شما میتوانید بدون استفاده از گزینه B، با قرار دادن کلمه در دو ** به صورت **بولد**، هر کلمه یا عبارتی را Bold کنید. یک سری کلمه و عبارت در متن نوتبوک مرجع، Bold هستند که با استفاده از این تکنیک آنها را Bold کنید.
Italic در نوتبوک
برای کج کردن یا ایتالیک یک کلمه یا عبارت، کافی است از آیکون I استفاده کنید. اگر هم نمیخواهید از این آیکون استفاده کنید، کافی است کلمه یا عبارت مدنظرتان را در * قرار دهید. یعنی به اینصورت: *ایتالیک*.
متن خط زده در نوتبوک
برای خط زدن یک متن، آیکونی وجود ندارد. اما با استفاده از شورتکات ~~ میتوانید این کار را انجام دهید. پس کافی است بنویسید: ~~متن مدنظر~~
قرار دادن کد در نوتبوک
اگر به کدهای موجود در این پست نگاهی بیندازید، مشاهده میکنید کدها در یک باکس با پسزمینه رنگی نشان داده شده است. برای اینکه کد از سایر بخشهای متن متمایز باشد و خوانایی بالاتر برود. همین قابلیت در نوتبوک هم وجود دارد. اگر میخواهید در سلول متن یک تکه کد مانند نوتبوک مرجع قرار دهید، کافی است از آیکون <> (4) استفاده کنید. اگر هم میخواهید از شورتکات استفاده کنید، باید از علامت “` که زیر Esc قرار دارد، استفاده کنید. بسیارخب، این تغییرات را در نوتبوک مرجع انجام دهید.
لینک در نوتبوک
با استفاده از گزینه شماره 5 میتوانید روی هر کلمهای لینک قرار دهید. کافی است یک کلمه را انتخاب کنید، بعد روی گزینه 5 کلیک کنید و بعد لینک مدنظر را وارد کنید. بعد از زدن دکمه لینک، کلمه مدنظر شما به شکل زیر تبدیل میشود و میتوانید آدرس را در داخل پرانتز قرار دهید. میبینید که https را هم برای شما آماده گذاشته است.
[text](https://)
شورتکات لینک کمی سختتر از قبلیهاست. باید متن را در براکت [] قرار دهید و بلافاصله، یک پرانتز () بگذارید و در این پرانتز لینک مدنظر را وارد کنید. اگر هم نمیخواهید هیچ متنی را لینک دار کنید و صرفا میخواهید یک آدرس قرار دهید، کافی است آدرس مدنظرتان را در سلول کد با http کپی کنید.
تصویر در نوتبوک
با زدن آیکون شماره 6 میتوانید در سلول تصویر اضافه کنید. بعد از زدن این گزینه، یک پنجره باز میشود و از شما میخواهد که تصویر مدنظرتان را انتخاب کنید. با اضافه کردن یک تصویر مشاهده میکنید که یک عالمه کد به سلول اضافه میشود و در سمت چپ، تصویر شما را نشان میدهد. اگر میخواهید تصویری در اینترنت را نشان دهید، میتوانید از شورتکات زیر استفاده کنید:

در داخل براکت، متن مدنظرتان را بنویسید و داخل پرانتز هم آدرس اینترنتی تصویر را قرار دهید. دقت کنید، شورتکات این حالت نسبت به شورتکات لینک تنها در یک علامت ! تفاوت دارد. تغییرات متناسب با نوتبوک مرجع را انجام دهید. تصاویر دلخواه استفاده کنید…
Indent در نوتبوک
Indent یا تورفتگی، یکی دیگر از امکاناتی است که در سلول متن میتوان ایجاد کرد. گاهی میخواهیم بخشی از متن کمی جلوتر از بقیه باشد. دراینحالت، کافی است آیکون 7 را انتخاب کنید و متن مدنظرتان را تایپ کنید. شورتکات این دستور هم بسیار ساده است و باید از < استفاده کنید. به ازای هر بار زدن علامت <، به اندازه یک Tab تورفتگی ایجاد میشود.
شماره گذاری در نوتبوک
با استفاده از آیکون 8، میتوانید orderd list یا لیست شمارهدار بسازید. آیکون شماره 8 را بزنید و مطابق نوتبوک مرجع یک لیست شمارهدار بسازید. البته، میتوانید از شورتکات هم استفاده کنید؛ کافی است قبل از هر مورد در لیست، یک عدد دلخواه و نقطه مثل .1 بگذارید. آیا در هر سطر عدد را زیاد کنم؟ خیر، در هر سطر دقیقا یک عدد یکسان بنویسید (همان .1) و بقیه را به نوتبوک بسپارید. خودش بهصورت خودکار شمارهگذاری را انجام میدهید. به نوتبوک مرجع دقت کنید…
Bullet در نوتبوک
اگر میخواهید یک لیست با Bullet بسازید و نیازی به شمارهگذاری نیست، از آیکون شماره 9 استفاده کنید. شورتکات این عمل هم قرار دادن تنها یک * در ابتدای هر سطر است.
خط افقی در نوتبوک
برای کشیدن یک خط افقی در نوتبوک باید از آیکون شماره 10 استفاده کنید.
درنهایت، آیکون شماره 11، محل نمایش خروجی Markdown را عوض میکند. ممکن است بخواهید زیر ادیتور نشان دهد. با زدن این گزینه دو حالت افقی و عمودی برای نمایش خواهید داشت.
استفاده از GPU در کولب
نمیخواهم وارد جزئیات کدنویسی شوم؛ بههمین خاطر خلاصه بگویم که در کد کراس زیر، یک شبکه MLP با تعدادی لایه را برای آموزش روی یک دیتاست MNIST استفاده کردهام. مدل اصلا فنی نیست و برای اهداف خاصی تعداد لایهها را زیاد کردهام. کد را اجرا کنید.
# Load dataset
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# Define model
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10)
])
# Create loss function
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
# Compile model
model.compile(optimizer='adam',
loss=loss_fn,
metrics=['accuracy'])
# Train model
model.fit(x_train, y_train, epochs=5)
# Evaluate
model.evaluate(x_test, y_test, verbose=2)
زمان اجرا در خروجی نشان داده میشود:
Epoch 1/5 1875/1875 [==============================] - 17s 9ms/step - loss: 0.2304 - accuracy: 0.9309 Epoch 2/5 1875/1875 [==============================] - 16s 9ms/step - loss: 0.1138 - accuracy: 0.9670 Epoch 3/5 1875/1875 [==============================] - 16s 8ms/step - loss: 0.0864 - accuracy: 0.9747 Epoch 4/5 1875/1875 [==============================] - 16s 9ms/step - loss: 0.0704 - accuracy: 0.9797 Epoch 5/5 1875/1875 [==============================] - 16s 9ms/step - loss: 0.0595 - accuracy: 0.9829 313/313 - 1s - loss: 0.0894 - accuracy: 0.9750 [0.08942026644945145, 0.9750000238418579]
هر epoch حدود 17 ثانیه زمان میبرد.
هیجان در آموزش گوگل کولب : حالا GPU وارد میشود!
وقت آن رسیده که از GPU استفاده کنیم تا محاسبات با سرعت بیشتری انجام شود. از منوی Runtime گزینه Change runtime type را باز کنید. یک کشو میبینید که روی None قرار دارد. آنرا باز کنید و روی GPU بگذارید. بعد از اینکه این کار را انجام دادید و Save را زدید، بلافاصله ارتباط شما با این ماشین مجازی یا VM قطع میشود و بعد از مدت کوتاهی یک ماشین مجازی با GPU به شما داده میشود. ماشین مجازی جدید ویژگیهای زیر را دارد:
- دراینحالت شما هارد کمتری نسبت به هارد سیستم CPU دارید. حدود 40 گیگابایت کمتر…
- ماوس را روی Connect ببرید، میبینید که موتور شما حالا GPU دارد.
- میزان رَم GPU شما در بخش Connect نوشته شده است.
حالا کافی است دوباره سلول کد آموزش شبکه بالا را اجرا کنید تا ببینید محاسبات بسیار سریعتر از قبل انجام میشود. با خطا مواجه شدید؟ کتابخانهها را نمیشناسد؟
هشدار تمامی اطلاعاتی که تاکنون از طریق دانلود و نصب در ماشین مجازی قبلی ریخته بودیم، پرید! بنابراین، حواستان باشد که تغییر Runtime باعث میشود تمام اطلاعات موجود در ماشین مجازی بپرد و دوباره باید همه اطلاعات را وارد کنید.یعنی باید از اولین سلول، دوباره تکت سلولها را اجرا کنیم تا به آخرین سلول برسیم؟ بله، اما راههای سادهای هم وجود دارد. کافی است از منوی Runtime گزینه Run all را انتخاب کنید تا همه سلولها بهصورت خودکار یکی پس از دیگری اجرا شوند. دراینحالت دیگر نیازی به اجرای تکتک سلولها از جانب شما نیست. شورتکات این دستور هم ctrl+f9 است. حالا وقتی که کد آموزش شبکه MLP با GPU اجرا شد، خواهید دید که در حدود 6 ثانیه هر ایپوک طول میکشد. حدود 1/3 حالت CPU…
راستی مشخصات GPU موجود در کولب چیست؟
کولب ابتدا با K80 شروع کرد، اما تا به امروز من 4 عدد GPU دیدهام:
- K80 با 12 گیگابایت رم
- Tesla T4 با 16 گیگابیت رم (از بچههای نیک کولب!)
- P100 با 16 گیگابیت رم (قدرتمند مثل Tesla T4)
- آخرین مورد را دقیق یادم نیست! فکر کنم P4 بود. 8 گیگابیت رم داشت و خیلی قوی نبود. اگر اسمش را اشتباه گفتم، لطفا به من بگویید…
- کولب TPU (پردازنده اختصاصی گوگل) را هم ارائه میدهد که البته موارد بالا عملکرد بهتری نسبت به TPU دارند.
از کجا بفهمم چه مدل GPU به من داده است؟ با استفاده از دستور nvidia-smi! میتوانید مشخصات کاملی از GPU مانند زیر ببینید:
Tue Sep 1 15:37:56 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.66 Driver Version: 418.67 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 Off | 00000000:00:04.0 Off | 0 |
| N/A 40C P8 9W / 70W | 10MiB / 15079MiB | 0% Default |
| | | ERR! |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
تذکر گاهی ممکن است به کولب متصل باشید ولی از GPU استفاده نکنید. گوگل به شما پیغامی میدهد که اگر با GPU کاری ندارید، آنرا غیرفعال کنید تا بیخودی اشغال نشود. این سرویس بسیار ارزشمند است، پس با همکاری با گوگل شرایطی را ایجاد کنیم که تمامی هموطنان بتوانند از این سرویس استفاده کنند.
رسیدیم به آخرین سلول نوتبوک مرجع و آموزش گوگل کولب که مربوط به نمایش نمودار و تصویر است.
رسم نمودار در گوگل کولب
رسم هرگونه نموداری و یا نمایش هر تصویری در گوگل کولب بسیار ساده است. در تکه کد زیر، یک نمودار رسم میشود و مشاهده میکنید که رسم نمودار پیچیدگی خاصی ندارد.
ys = 200 + np.random.randn(100)
x = [x for x in range(len(ys))]
plt.plot(x, ys, '-')
plt.fill_between(x, ys, 195, where=(ys > 195), facecolor='g', alpha=0.6)
plt.title("Fills and Alpha Example")
plt.show()
خب، ساخت نوتبوک مرجع به پایان رسید. امکانات گوگل کولب بسیار زیاد است و من با اینکه شما را با گوشهای از پایهترین امکاناتش آشنا کردم، حاصلش یک متن طولانی شد. انشالله، بعدا بازهم نکات جدید به این آموزش گوگل کولب اضافه میکنم. اما این پست تا همینجا شامل حداقل اطلاعات لازم برای کار با کولب هست. پس امیدوارم با نوتبوک مرجع پیش رفته بروید و آموزش برای شما مفید باشد. مشتاق دیدن نظرات و پیشنهادات شما در کامنت هستم…
سلام. ممنون از آموش خوبتون
میخواستم بدونم توی کولب راهی هست که وقتی دیتارو با دستور files.upload آپلود میکنیم یا یکسری ماژولهارو توی نوت بوکمون دانلود، نصب و ایمپورت میکنیم(مثلا کتابخونه ی hazm)، بشه اونها رو جوری سیو کرد که بعدا موقع اجرای مجدد کدها یا ری استارت و… از اول دانلود و نصب نشن؟
سلام
میتونید فایلها و پکیجهاتون رو در گوگل درایو ذخیره کنید که نیازی نباشه هربار آپلودشون کنید. این کار خیلی ساده انجام میشه. اما نمیتونید کاری کنید که یک بار برای همیشه نصب انجام بشه. میتونید دستورات لازم برای نصب پکیجها رو با pip install آماده بذارید، هربار که خواستید کار کنید، اول اون سلولهای نصب پکیج رو بزنید که فایل رو از گوگل درایو شما بردارن و نصب کنن. بعدش شروع به کار اصلیتون کنید.
شیر مادرت حلالت .دمت گرم
سلام
سپاس 😅🙏
سلام و وقت بخیر. دادگانی که در کد استفاده کردم MNIST بوده. دو لایه CONV در بخش انکودر بعد از هر لایه ماکس پولینگ و در بخش دیکودر دولایه UNMAXPOOLING و بعد هر لایه CONV بکار بردم اما در نهایت بعد لایه ی آخر این خطا را در مرحله آموزش دریافت کردم:
ValueError: Error when checking target: expected conv2d_5 to have shape (14, 14, 1) but got array with shape (28, 28, 1)
کد بنده:
input_img = layers.Input(shape=(28, 28, 1)) # adapt this if using `channels_first` image data format
x1 = layers.Conv2D(16, (3, 3), activation=’relu’, padding=’same’)(input_img)
pool_1, mask_1 = MaxPoolingWithArgmax2D(pool_size=(2, 2))(x1)
x2 = layers.Conv2D(8, (3, 3), activation=’relu’, padding=’same’)(pool_1)
pool_2, mask_2 = MaxPoolingWithArgmax2D(pool_size=(2, 2))(x2)
unpool_1 = MaxUnpooling2D(pool_size)([pool_2, mask_2])
x4 = layers.Conv2D(8, (3, 3), activation=’relu’, padding=’same’)(unpool_1)
unpool_2 = MaxUnpooling2D(pool_size)([x4, mask_2])
x5 = layers.Conv2D(16, (3, 3), activation=’relu’, padding=’same’)(unpool_2)
decoded = layers.Conv2D(1, (3, 3), activation=’sigmoid’, padding=’same’)(x5)
autoencoder = Model(input_img, decoded)
autoencoder.compile(optimizer=optimizers.Adam(), loss=losses.binary_crossentropy)
print(autoencoder.summary())
#===============================================================================
# Train the Model
autoencoder.fit(x_train, x_train,
epochs=10,
batch_size=128,
shuffle=True,
validation_data=(x_test, x_test))
در صورت استفاده از upsampling با سایز 2*2 برای عملکرد صحیح اتوانکودر با این خطا مواجه میشم:
InvalidArgumentError: Input to reshape is a tensor with 200704 values, but the requested shape has 802816
[[{{node max_unpooling2d_2/max_unpooling2d_2/Reshape_1}}]]
[[{{node Mean}}]]
سلام
مشکل شما مربوط به کدنویسی کراس هست و گویا مشکلی در گوگل کولب ندارید. به نظر میرسه، لایه conv2d_5 یک تنسور به ابعاد (14, 14, 1) رو به عنوان ورودی میپذیره، اما با یک تنسور به ابعاد (28, 28, 1) مواجه شده…
سلام خیلی ممنون از آموزش خوبتون،
من کارمپیش بینی با شبکه عصبی عمیق هست. میخوام بدونم کار با کلوب بهتره یا پایچارم؟
سلام
نظری که ما میدیم، براساس تجارب و مشاهداتمون هست. بنابراین، نمیتونیم بگیم حرفمون صدردرصد درست هست.
برای کارهای تحقیقاتی، ادیتورهایی مثل پایچارم و vscode بهتر هست. وقتی به کدهای موجود در گیتاب نگاه میکنیم، میبینیم که بسیاری از اونها از vscode استفاده میکنن. دو ادیتور vscode و پایچارم شبیه هم هستن.
اما، به خاطر اینکه کولب یک GPU به افراد میده، بسیاری از افراد با این سرویس کار میکنن. طبیعتا GPU در کار تحقیقاتی مبتنی بر یادگیری عمیق نقش مهمی داره.
پس، اگر GPU دارید، بهتر هست از vscode و پایچارم استفاده کنید. اگر سخت افزار خوب ندارید، کولب گزینه مناسبی هست.
موفق باشید.
سلام و وقت بخیر. ممنونم برای مطلب کامل و جامع تان. بنده چند فولدر در درایو گوگل اپلود کردم. یکی از فولدرها حاوی 400 عکس برای آموزش، و فولدر دیگر هم حاوی 300 تا عکس می باشد. می خواهم برای آماده سازی دادگان در یک متغییر فایل حاوی تصاویر train رو وارد بریزم و در دیگری هم برای تست این عمل را انجام دهم.
با دستور chdir به محتوای ادرس رسیده اما اعلام میکنه تکرار ناپذیره و من استایل متغییری که دادگان رو ادرس دادم میزنم اعلام میکنه کلاس از نوع str هست. لطف می کنید راهنمایی بفرمایید.
سلام
سپاس 🌹🙏
معمولا در چنین شرایطی از کتابخونه os استفاده میکنیم. اتفاقا از این کتابخونه در کولب هم میتونید استفاده کنید. پیشنهاد میکنیم مراحل زیر رو طی کنید:
1- در کتابخونه os، دستوراتی os.listdir میتونه محتویات یک پوشه یا آدرس رو به شما نشون بده. پس با این دستور میتونید لیست تصاویرتون در پوشهها رو داشته باشید.
2- بعد از طریق عملگر + یا os.path.join میتونید مسیر کامل تصویر رو بسازید.
3- درنهایت با استفاده از کتابخونههایی مثل OpenCV، تصاویر رو لوود کنید و در متغیری ذخیره کنید.
بی نهایت ممنونم
سلام خیلی ممنون از آموزش خوبتون.
سوالی دارم اینکه از گوگل کولب میشه به فایل های داخل یک درایو خاص در ویندوزم دسترسی داشته باشم؟ یا حتما باید اطلاعات رو در گوگل درایو قرار بدم و مانت کنم؟ مثلا من میخوام با دستور listdir لیست تمامی فایلهایی که در دایرکتوری خاصی روی ویندوز قرار داره رو بگیرم ولی با خطای NameError: name ‘listdir’ is not defined مواجه میشم.
سلام
سپاس 🌹🙏
خیر، نمیتونید با استفاده از دستوراتی مثل listdir به فایلهای موجود در کامپیوتر شخصی دسترسی داشته باشید. به دو روش زیر میتونید این کار رو انجام بدید:
1- آپلود فایلها در گوگل درایو و مانت گوگل درایو (بهترین راه)
from google.colab import drivedrive.mount('/content/drive')
!ls /content/drive/MyDrive/
2- آپلود فایلها در گوگل کولب و استفاده از هارد ماشین مجازی که به شما داده شده (اطلاعات موقت ذخیره شده و پاک میشه)
from google.colab import filesuploaded = files.upload()
** در بعضی از حالات میشه دادهها رو در یک هاست ذخیره کرد و از اون هاست به دادهها در گوگل درایو دسترسی داشت.
سلام
تشکر از آموزش خوبی که تهیه کردید، یه نکته ای در مورد نصب کتابخونه xml2dic باید تصحیح بشه و این که با فرمان
pip install python-xml2dict! باید نصب بشه و به همون صورت xml2dic فراخوانی بشه نه xmltodic
با تشکر
سلام
خوشحالیم که از آموزش راضی بودید.
تشکر بابت نکتهای که فرمودید. ما دوباره بررسی کردیم، اما نکته جالب اینجاست که دو کتابخانه python-xml2dict و xmltodict وجود داره. بعد از کامنت شما، ما دوباره دستور pip install xmltodict! رو در کولب تست کردیم. بدون مشکلی نصب شد و کار کرد.
سپاس 🌹
سلام. ممنون از آموزشتون
من سعی دارم کدی رو اجرا کنم، کد و دیتا ها رو در گوگل درایو گذاشتم، اجرا میشه اما در انتهای یکی از فایل ها که با دستور open with میخواد یه فایل رو بنویسه موفق نمیشه و ارور میده
میخواستم ببینم در این زمینه میتونید راهنمایی کنید؟
سلام
سپاس 🌹
باید خطا رو ببینیم. بخش مهم متن خطا رو میتونید اینجا کپی کنید که ببینیم.
این نکته رو هم چک کنید که مسیر ذخیره شدن فایل درست باشه. یعنی آدرس ذخیره فایل معتبر باشه.
عالي
سلام
سپاس 🌹
سلام خسته نباشید واقعا برای من که تازه دارم با پایتون و کولب آشنا میشم واقعا مناسب و عالی بود .
اما سوالی که من دارم اینه که از کجا من میتونم به لیست متغیرهای تعریف شده یا محاسبه شده دسترسی داشته باشم خب من چون تازه واردم برا اینکه بتونم کدهای آماده رو تحلیل کنم و ببینم چی به چیه، شاید این دسترسی میتونه منو کمک کنه. قبلنا با متلب که کار میکردم همینجوری تونستم یادش بگیرم لطفا کمکم کنین!!!!
سلام
از اینکه آموزش برای شما مفید بوده خوشحالیم…
احتمالا منظور شما workspace دوستداشتنی متلب هست. متاسفانه این ویژگی در گوگل کولب وجود نداره، یعنی جایی در کولب نیست که لیست همه متغیرهای تعریف شده رو به شما نشون بده. البته فعلا، شاید بعدا اضافه بشه!
اما دو راه حل پیشنهادی برای شما:
1) در این لینک شما میتونید مجموعهای از تکنیکهای دیدن لیست متغیرها رو با دستورها مشاهده کنید. مثلا ما در گوگل کولب از دستور %whos استفاده کردیم و نتیجه بد نبود!
2) پایچارم: پایچارم یک IDE هست که بین پایتونکارها خیلی محبوبه و شما میتونید از این IDE برای کدنویسی استفاده کنید. اتفاقا بعد نصب و کمی کار کردن باهاش، حس میکنید شبیه متلب هست و زود باهاش ارتباط برقرار میکنید. پایچارم، علاوهبر ابزارهای عالی برای دیباگ کردن، اون پنجره workspace رو هم داره. این هم یک لینک معرفی مختصر پایچارم در حد 30 دقیقه…
اگر دوستان هم راه حلی دارن، در کامنت بگن که همه استفاده کنیم.
خیلی خوب توضیح دادید.چندتا صفحه دیدم تا به آموزش شما رسیدم هم سریع بود و بدون حاشیه و هم قابل فهم.خسته نباشید.
سلام
خوشحالیم که آموزش برای شما مفید بوده. سپاس برای کامنتی که گذاشتید 🌹
در ماه گذشته، هوسم یک وبینار رایگان آموزش گوگل کولب (2 ساعت) برگزار کرد. ویدئوی این وبینار موجود هست. درصورت تمایل، از طریق چت آنلاین به پشتیبانی پیام بدید تا ویدئو رو در اختیار شما قرار بده.
ضمن سلام و تشکر بابت این آموزش عالی فقط استاد چطوری می تونم ماژولی که خودم نوشتم رو به پروژه ام در google colab اضافه کنم؟
سلام
خوشحالیم که از آموزش راضی بودید، سپاس. 🌹
استفاده از تابع و ماژول خودتون ساده هست. مثلا اگر یک فایل پایتونی به اسم myfunctions.py داشته باشید، کافی هست اول import myfunctions رو در کولب بنویسید و بعد از توابع خودتون استفاده کنید. این رو بگم که ماژولتون رو تو همون بخش Files که در آموزش گفته شده آپلود کنید.
در یک حالت دیگه، اگر یک فایل پایتونی مثلا main.py دارید و میخوایید اون فایل رو در کولب اجرا کنید، کافی هست از دستور زیر استفاده کنید.
python main.py!
با سلام.من قصد اجرای یک شبکه عمیق در گوگل کلاب رادارم.من کد خود را با پایتون دو نوشتم.در notbook setting گزینه ای برای تغییر از پایتون 3 به پایتون 2 وجود ندارد.میشه راهنمایی بفرمایید
سلام
آدرس زیر رو در مرورگرتون وارد کنید تا یک نوتبوک با پایتون 2 برای شما بسازه. یک ترفند کوچک 😉
colab.to/py2
برای دانلود دیتا ست از kaggle برای google colab چه کاری میشه کرد ؟
سلام،
برای دانلود دیتا از kaggle باید یه کمی کد بنویسید.
توی نوتبوک زیر این کدها وجود دارن:
https://github.com/howsam/covid-19-detection-project