آموزش گوگل کولب
بهنام خدا، سلام… در این پست میخواهم شما را با سرویس گوگل کولب آشنا کنم. اگر با یادگیری عمیق سروکار دارید، احتمالا نام آن را شنیدهاید. تلاش کردهام پست آموزش گوگل کولب یک آموزش مقدماتی و کاربردی باشد. امیدوارم، این آموزش برای دوستانی که با کولب آشنایی کمی دارند، مفید باشد. با هوسم همراه باشید…
انگیزه پست آموزش گوگل کولب
گوگل کولب یک سرویس ابری است که به ما سختافزار با 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 میتوانید در سلول تصویر اضافه کنید. بعد از زدن این گزینه، یک پنجره باز میشود و از شما میخواهد که تصویر مدنظرتان را انتخاب کنید. با اضافه کردن یک تصویر مشاهده میکنید که یک عالمه کد به سلول اضافه میشود و در سمت چپ، تصویر شما را نشان میدهد. اگر میخواهید تصویری در اینترنت را نشان دهید، میتوانید از شورتکات زیر استفاده کنید:
![text](https://)
در داخل براکت، متن مدنظرتان را بنویسید و داخل پرانتز هم آدرس اینترنتی تصویر را قرار دهید. دقت کنید، شورتکات این حالت نسبت به شورتکات لینک تنها در یک علامت ! تفاوت دارد. تغییرات متناسب با نوتبوک مرجع را انجام دهید. تصاویر دلخواه استفاده کنید…
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()
خب، ساخت نوتبوک مرجع به پایان رسید. امکانات گوگل کولب بسیار زیاد است و من با اینکه شما را با گوشهای از پایهترین امکاناتش آشنا کردم، حاصلش یک متن طولانی شد. انشالله، بعدا بازهم نکات جدید به این آموزش گوگل کولب اضافه میکنم. اما این پست تا همینجا شامل حداقل اطلاعات لازم برای کار با کولب هست. پس امیدوارم با نوتبوک مرجع پیش رفته بروید و آموزش برای شما مفید باشد. مشتاق دیدن نظرات و پیشنهادات شما در کامنت هستم…
مطالب زیر را حتما مطالعه کنید
شبکه ویژن ترنسفورمر
شبکه اتوانکدر
شبکه عصبی mlp
شبکه ترنسفورمر
مدل MobileLLM
یادگیری عمیق چیست
85 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام ممنون از مطالب خوبتون
چگونه می توانم در کولب از چت جی پی تی استفاده کنم ؟
سلام. ممنون از اطلاعات خوبی که گذاشتید. یه سوال داشتم. من دارم از روی یک نوتبوک که کدهای کار متن رو آماده داره یک نوتبوک می سازم که همون کار روی داده های منطقه خودم پباده کنم. اون نوتبوک 12 تصویر راداری رو که هر کدوم 7 گیگ هستش رو دانلود و پردازش می کنه. ولی وقتی من همونکار انجام می دم (32 تصویر) تو یک نوت جدید برای من خطا می ده. و من نمی فهمم که چرا؟ آیا چیز دیگه ای غیر از کدهای درون سلولهای یک نوتبوک هست که اون نوتبوک رو متمایز کنه؟ ممنون
سه تا شورت کات که خیلی توی گوگل کولب به کار میاد؛
کنترل و / : برای اینکه چند خط کد رو یکجا کامنت کنید
کنترل و + : برای زوم کردن نوشته های گوگل کولب
کنترل و – : برای از زوم خارج کردن نوشته های کولب
سلام
ممنون از شما مسلم عزیز، بابت به اشتراک گذاشتن تجربیاتتون. 🙏
اخیرا در هوسم یک پست با عنوان 15 کلید میانبر گوگل کولب منتشر کردیم.
سلام و خسته نباشید
من دوماه پیش بصورت سرسری دنبال چنین آموزشی بودم اما مرجع خوب و ساده ای پیدا نکردم. تا اینکه چند روز قبل دوباره مجبور بودم پروژه ای را اجرا کنم و از گوگل کولب استفاده کنم. از گوگل به این مطلب رسیدم و خیلی عالی و خوب توضیح داده بودین. فقط کمی طولانی است.
راستی از گیت هاب ک پروژه رو چگونه می تونیم بیاریم روی گوگل کولب و اجراش کنیم.
سلام
خوشحالیم که آموزش برای شما مفید بوده.
توضیح درمورد اجرای کدهای گیتهابی در گوگل کولب در کامنت امکان پذیر نیست. اما به صورت خلاصه، از ReadMe و توضیحات موجود در ریپوی گیتهاب برای اجرای پروژه استفاده کنید.
عالییییی
با سلام
خیلی ممنون از توضیحات کامل و دقیقتون
تو بحث RAM کولب سوالی از خدمتتون داشتم. در این رابطه که اگر من فایلی رو در کولب لود کنم بعنوان مثال:
‘features_file = ‘/content/drive/MyDrive/DATASET/IEMOCAP_multi.pkl
:with open(features_file, “rb”) as fin
features_data = pickle.load(fin)
این دیتا تقریبا 6 گیگ از RAM کولب بنده رو مشغول میکنه
حال اگر بخوام RAM من خالی از این حجم دیتا بشه بدون اینکه از گزینه Restart Runtim استفاده کنم چه پیشنهادی میکنین؟
(دلیل استفاده نکردن از Restart Runtim هم اینه که دیتاهای دیگه هم در RAM وجود داره)
خیلی ممنون از مطالب و تجارب ارزشمند که در اختیار همه قرار می دهید.
سپاس🌹
سلام ممنون از آموزش های خوبتون
من یه دیتایی دارم که در نرم افزار آماری spss با پسوند sav isj و در این دیتا گزینه های مثل زن و مرد وجود داره که در داخل خود spss به صورت عددی تعریف شده اما وقتی وارد کولب دیتارو میارم به صورت توصیفی خود زن و مرد رو مینویسد
من باید چه دستوری بنویسم که دیتا رو به صورت عددی وارد کولب کنم؟
سپاس🌹
تجربه کار با این نوع داده رو نداریم.
سلام
من از کتابخانه os برای خوندن فایلهای عکسی استفاده کردم وقتی از ماژول listdir استفاده میکنم و ادرس دهی میکنم اصلا ادرس رو متوجه نمیشه و خطا میده این در حالیه وقتی همین ادرس رو با ژوپیتر امتحان میکنم متوجه میشه و فایلها رو میخونه اما در کولب میگه همچین مسیری وجود نداره
ممنون میشم راهنماییم کنید عجله دارم
سلام ممنون از مطالب مفید و زیباتون.
چطور میتونم کد پایتونی رو که برام از طریق جیمیل ارسال کردن ، منتقل کنم به کولب و با گوگل کولب بازش کنم و روش کار کنم ؟.ممنون میشم راهنماییم کنین
سلام وقتون بخیر ،ببخشید گوگل کولب من زمانی که باسیستم واردش میشم و نوتبوک جدید رو باز میکنم فقط برام میزنه لودینگ و باز همیشه میشه راهنمایی کنید ممنون..
سلام
به نظر میرسه این مشکلات مربوط به داخل کشور هست. در دو ماه اخیر، چند دانشجوی دیگه هم این مشکل رو مطرح کردن. پیشنهاد ما این هست که با اینترنتهای مختلف و مرورگرهای متفاوت تست کنید. همچنین، 🔓 رو هم تست کنید.
من دستور نصب کتاب خانه python-telegram-bot رو دادم ولی این ارور رو میده میشه راهنمایی کنید؟
2 import random
3 import requests
—-> 4 from telegram.ext import *
5
6
7 frames
/usr/local/lib/python3.7/dist-packages/tornado/iostream.py in BaseIOStream()
284 self._closed = False
285
–> 286 def fileno(self) -> Union[int, ioloop._Selectable]:
287 “””Returns the file descriptor for this stream.”””
288 raise NotImplementedError()
AttributeError: module ‘tornado.ioloop’ has no attribute ‘_Selectable’
سلام و سپاس فراوان بابت این آموزش زیباتون.خیلی ساده و روان درس دادید.
میشه لطف کنید و ادامه این آموزش هم در سایتتون قرار بدید.
سلام .ممنون میشم من رو راهنمایی کنید.من در colab بعد از اینکه tensorflow_federated را نصب کردم .دستور import را نوشتم و با این خطا روبرو شدم .چه راه حلی برای رفع این خطا پشنهاد میکنید
Traceback (most recent call last):
File “/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py”, line 3326, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File “”, line 1, in
import tensorflow_federated as tff
File “/usr/local/lib/python3.7/dist-packages/tensorflow_federated/__init__.py”, line 21, in
from tensorflow_federated.python import analytics
File “/usr/local/lib/python3.7/dist-packages/tensorflow_federated/python/analytics/__init__.py”, line 18, in
from tensorflow_federated.python.analytics import heavy_hitters
File “/usr/local/lib/python3.7/dist-packages/tensorflow_federated/python/analytics/heavy_hitters/__init__.py”, line 16, in
from tensorflow_federated.python.analytics.heavy_hitters import iblt
File “/usr/local/lib/python3.7/dist-packages/tensorflow_federated/python/analytics/heavy_hitters/iblt/__init__.py”, line 16, in
from tensorflow_federated.python.analytics.heavy_hitters.iblt.chunkers import CharacterEncoding
File “”, line 1
(max_chunk_value=)
^
SyntaxError: invalid syntax
همن کد رو در vs code اجرا کنید ببین باز هم ارور میده یا نه
فکر کنم سینتکس ارور نشانه وجود غلط املا ایه
سلام چطوری میتونم دیتاست از دسکتاپ بیارم داخل کولب
سلام
دیتاست رو در گوگل درایو آپلود کنید. بعد با توضیحاتی که در این پست داده شده، گوگل درایو رو به کولب متصل و از دیتاست استفاده کنید.
با سلام و تشکر از مطالب مفیدی که می گذارید.
میشه شیوه آپلود کردن یک فایل یا دیتا ست در گوگل کولب رو هم بفرمایید؟
در پروژه ها که کدهای آماده ای دارند و کتابخانه هایی توسط طراح اولیه نوشته شده است وقتی این فایل ها رو در گوگل درایو آپلود می کنیم و بعد در کولب import می کنیم با خطای no module برخورد می کنیم.
و دوم کار با دیتا ست های که در هارد خودمان قبلا دانلود کردیم و الان در کولب می خواهیم ازشون استفاده کنیم.
یا از یک آدرس بخصوص می خواهیم دانلودشون کنیم یا از سایت کگل قرار هست دانلود بشه رو میشه هوسم طور برامون بگید شیر فهم بشیم.
با تشکر از تیم خوبتون
سلام
انشالله، این پست رو آپدیت میکنیم و درمورد دیتاست بیشتر توضیح میدیم.
سلام
ممنون از تدریس مختصر و مفیدتان
اکثر دانشجویان کدنویسی متلب را بلدند. کاش مطالب با کدنویسی در متلب مقایسه می شد تا راحت تر و دقیقتر می شد کدنویسی را با پایتون در کولب یاد گرفت.
باز هم ممنون
سلام. نحوه خواندن و ایجاد کردن فایل csv در گوگل کولب چگونه است؟
سلام من بصورت زیر از فایل های csv تو گولب استفاده می کنم: اول دو خط زیر را اجرا کنید
from google.colab import files
()updated = files.upload بعد یک گزینه choose file ظاهر میشه که اونرو انتخاب کنید و فایل موردنظرتون را انتخاب کنید بعد صبر کنید تا 100 درصد لود بشه بعد
df=pd.read_csv(io.StringIO(uploaded[‘data.csv’].decode(‘ISO-8859-1’)))
را اجرا کنید.
سلام. خیلی متشکر از آموزش عالی تون. امکانش هست آموزش بدید چطور کولب رو روی کامپیوتر لوکال (local runtime) اجرا کنیم؟
ImportError: cannot import name ‘BatchNormalization’ from ‘keras.layers.normalization’ (/usr/local/lib/python3.7/dist-packages/keras/layers/normalization/__init__.py)
سلام
من یک کدی دارم وقتی ران میکنم این خطا داده می شود ولی نمیدونم چجوری رفعش کنم
ممنون میشم کمکم کنین
سلام
خطای شما به گوگل کولب ارتباط نداره. میخوایید BatchNormalization رو ایمپورت کنید که گویا در کراس وجود نداره.
درود بر شما
آموزش عالی بوده خیلی ممنون از تیم قوی شما در این زمینه ایول دارید
من سوالی که دارم اینه چرا موقع کار کردن با کولب بطور مکرر دیسکانکت میشه دقیقا چند روزی هست اینطوری شده
من برای کارم نیاز دارم یکسری فایلهایی که داخل گوگل درایو دارم رو زیپ کنم کد مربوطه رو هم دارم و بدون مشکل کار میکرد ولی نمیدونم چرا همش کمتر از ١ دقیقه دیسکانکت میشه
سلام
از حسن نظر شما نسبت به هوسم خوشحالیم. ممنون 🌹🙏
احتمالا قطعیها به دو دلیل اتفاق میفته: اول، اینترنت پایدار نیاز هست. خب به نظر میرسه الان اینترنت در داخل کشور نوسان داره و این میتونه یکی از دلایل باشه. دوم، خود گوگل میتونه دلیلش باشه. گوگل کولب الان سرویسهای پولی پرو و پرو پلاس داره و میگه یکی از مزیتهاش قطعیهای کم هست. بنابراین، میخواد به شما بگه که اگه قطعی زیاد داری، بهتر هست بیای سراغ کولب پرو یا پروپلاس!
خیلی عالی ، سپاس فراوران
سلام
با تشکر فراوان از آموزش خوب دقیق و روان تون
می خواستم ببینم برای دیتا ست های چند ده گیگابایتی چکار می تونیم بکنیم
برای چند صد گیگابایتی (که قطعا از سایز هارد ماشین مجازی هم بیشتره) چکاری میشه کرد ؟
سلام
کولب حدود 30 گیگ فضا به شما میده که خب موقت هست. میشه از این فضا استفاده کرد. مثلا اگر دیتاست شما لینک مستقیم داشته باشه، میتونید دانلود کنید و بریزید توی کولب و بعد شروع کنید به کار کردن. هرچند این کار امکانپذیره، ولی سخته. ازطرفی، چون دیتاستها زیپ هستند، پس شاید نهایتا دیتاستهای 10 15 گیگ رو بتونید به این شکل داشته باشید.
برای دیتاستهای چند ده گیگابایتی، بهتره که کولب پرو تهیه کنید و همچنین گوگل درایو رو به حجم بالاتر آپگرید کنید. اینجوری امکان داشتن حجم بالاتر امکانپذیر میشه.
من فکر میکنم حتی با داشتن کولب پرو و گوگل درایو با حجم بالا هم، کار با دیتاست چندصد گیگابایتی امکانپذیر نیست. شاید بتونید مساله حجم رو رفع کنید، اما مشکل کمبود سختافزار (تعداد GPU) رو نمیتونید حل کنید. در چنین شرایطی گوگل کلود یا آمازون قطعا گزینههای بهتری هستن که در سطح حرفهای قرار دارن.
سلام من میخوام اکانت کولبم رو پریمیوم کنم. در ایران جایی هست که پول پرداخت کنیم و این کاد را انجام دهند؟
سلام
از سایتهای واسط پرداخت ارزی سوال کنید. شاید بتونن کمکتون کنن.
ضمن عرض سلام و وقت بخیر
مطالب مختصر و مفیدی رو ارائه دادید.. ممنون
من یه مشکلی که بهش برخوردم، اینه که میخام چند تا دیتایی که از اینترنت دانلود کردم رو ابتدا با هم ادغام (merge) کنم (فرض کنید که چند تا عکس ماشین هستن که من میخام بریزم تو یه دیتا فایل) بعدش منتقل کنم به google drive تا پاک نشه. منتهی نمیدونم از چه کد و دستورهایی باید استفاده کنم.
ممنون میشم راهنماییم کنید
سلام
شما باید از دستوراتی که در ترمینال لینوکس نوشته میشه استفاده کنید. در همین آموزش گوگل کولب تحت عنوان کار با سیستم عامل لینوکس چند نمونه دستور آوردیم.
بهصورت خلاصه اینکه، اول میتونید با wget فایلها رو دانلود کنید. بعد هم با دستوری مثل cp همه اونها رو در یک پوشه کپی کنید. درنهایت هم باز با استفاده از دستور cp کل پوشه رو به گوگل درایو انتقال بدید.
موفق باشید
با سلام و احترام
بابت آموزش عالی و کاربردی شما بسیار سپاسگزارم. من میخواستم برای کار پایان نامه ام یک شبکه عصبی گوگل نت و یک lstm رو روی کولب ران کنم و داده های من برای هر شبکه 4 تصویر ماهواره ای مربروط به 4 بازه زمانی متفاوت یکی از استان های کشور هست. متاسفانه سیستم مناسبی ندارم و در پایان نامه ها هم مشاهده کردم که به عنوان مثال برای ران کردن lstm از مرکز پردازش سریع استفاده کرده اند، میخواستم ببینم گوگل کولب توانایی پردازش و ران کردن lstm و گوگل نت رو داره؟
سوال دومم این هست که از طریق سایت paperwithcode، کد های گوگل نت رو پیدا کردم و با این کد ها میخواستم روی داده های خودم کار کنم آیا چنین چیزی امکان پذیر هست؟ چون در جایی دیدم میشه کدها رو که مربوط به حوزه کاری ما نیست پیدا کرد و تغییراتی متناسب با کار خودمون روی اون داد که به این کار انتقال یادگیری میگفتن( کدها در لینک زیر هست) ولی متاسفانه کدهای lstm رو نتونستم هنوز پیدا کنم و نمیدونم کجا باید بگردم…
https://github.com/pytorch/vision/blob/5a315453da5089d66de94604ea49334a66552524/torchvision/models/googlenet.py#L26
و در نهایت حدودا ران کردن این دو مدل به صورت مجزا چقدر زمان میبره؟
با سپاس از شما
سلام
از اینکه آموزش مورد رضایت شما بوده، خوشحالیم. سپاس 🌹🙏
قطعا گوگل کولب توانایی پردازش شبکه LSTM و GoogleNet رو داره. حتی شبکههای بسیار بزرگتر از اینها رو هم میتونید در گوگل کولب آموزش بدید. پس بابت قدرتش نگران نباشید.
در مورد سوال دوم هم، بله این بسیار رایج هست که از شبکههایی مثل گوگل نت در کار خودتون استفاده کنید.
کدی هم که فرستادید، سورس کدهای گوگل نت در فریمورک پایتورچ هست. اتفاقا پایتورچ کدهای مربوط به LSTM رو هم داره.
درمورد زمان اجرا هم نمیشه نظر داد. چون بسته به سایز ورودی، قدرت سخت افزار و بسیاری از عوامل دیگه، زمان اجرا متفاوت میشه.
اما در پایان یک پیشنهاد دوستانه برحسب تجربهای که در زمینه هوش مصنوعی و آموزش اون داریم؛ از سوالات شما اینطور به نظر میرسه که مباحث تئوری و کدنویسی یادگیری ماشین و یادگیری عمیق رو بلد نیستید. بنابراین، احتمالا با پیدا کردن کدهای LSTM و گوگل نت و یا هرشبکه دیگه هم نمیتونید به جواب مطلوب برسید. چون تازه مشکلات شما شروع میشه و اصلا نمیدونید که از کجا باید شروع کنید و چطور پایان نامه رو پیش ببرید. این مشکلی هست که بسیاری از دانشجویان با اون مواجه هستند. قبل از یادگیری مواد لازم، شروع به کار پایان نامه و پروژه میکنند. پیش اومده که ما به دانشجویان تذکر دادیم، اما همچنان توجهی نداشتند و همون راه اشتباه رو پیش گرفتند. پس حتما برای آموزش وقت بگذارید و پایهها رو خوب یاد بگیرید. وگرنه به هدفتون نمیرسید.
موفق باشید
با سلام و سپاس فراوان بابت پاسخ بسیار خوب شما، بابت راهنمایی و دلسوزی شما بسیار سپاسگزارم.
من قرار است در پایان نامه ام یک کار بین رشته ای انجام دهم در زمینه شبیه سازی محیط زیست و رشته من اصلا مرتبط با ریاضی و برنامه نویسی و هوش مصنوعی نیست به خاطر همین با ورود به این حوزه در بین دنیایی از اطلاعات و فیلم های آموزشی راه خودم را گم کردم. چندین فیلم آموزشی هم خریداری کردم ولی فایده زیادی نداشت چون عمدتا یک مثال خیلی ساده میزدنند و یا بعضی مختصر و بعضی هم اینقدر با جزییات توضیح می دادند که نمیدانستم آیا در این حد جزییات لازم است یا خیر…. اکنون به مقدمات آشنایی دارم ولی خودم هم میدانم برای شروع کار هنوز آماده نیستم. مشکل اساسی این است که به عنوان یک کاربر نمیدانم باید چقدر بدانم چون وقت محدود است وباید کار را زودتر شروع کنم. هر کاری کنم در این زمان کوتاه برنامه نویس نمی شوم، در زمینه رشته خودم متوجه میشوم تا چه قدر مقاله خواندن یا فیلم دیدن کافی است اما در این حوزه نه… تصویر ورودی هم حدودا 3017 در 4177 ابعاد دارد که رزولوشن هر پیکسل 30 متر است و 4 تصویر مربوط به 4سال مختلف وجود دارد. با توجه به اینکه در مقالات دیدم INPUT گوگل نت را 224*224 نوشته بودند یعنی باید تصویر اصلی خود را ریسایز کنم؟ و نمی شود خود تصویر با همین ابعاد را استفاده کرد؟
الان باید از کجا شروع کنم امکان دارد یک راهنمایی کلی برای راهی که طی کنم بفرمایید؟؟
برای یادگیری گوگل نت و یا توضیح کدهای آن فیلمی میشناسید به من معرفی کنید چون عمده فیلم هایی که دیدم به صورت کلی به CNN پرداخته بودند و به گوگل نت منحصرا پرداخته نشده بود.
ببخشید که اینقدر طولانی نوشتم…
به نظر میرسه سوالات شما به این متن، یعنی آموزش گوگل کولب ارتباط نداره. اما درهرصورت پاسخ دادیم. سوالات احتمالی بعدی رو پاسخ نمیدیم.
ما در حوزه کاری شما تخصصی نداریم و بنابراین نمیدونیم که یک ورودی به این ابعاد بزرگ رو چطور باید به شبکه بدید که به نتیجه مطلوب برسید. اما، شبکهای مثل گوگل نت میتونه ورودی های بزرگتر از 224×224 هم دریافت کنه. البته، به قیمت افزایش رم مصرفی GPU…
درمورد سوال بعدی هم که از کجا شروع کنید؛ از نظر ما اولین کار مهم برای شما، پیدا کردن یک مشاور خوب هست. یک مشاور خوب میتونه بهخوبی مسیر رو برای شما روشن کنه. شما باید فردی رو پیدا کنید که به کدنویسی فریمورکی مثل پایتورچ یا تنسورفلو مسلط باشه، به شبکه کانولوشنی مسلط باشه و همچنین روی حوزه تصاویر ماهوارهای تجربه کار داشته باشه.
در مورد سوال آخر که ویدئوی آموزش گوگل نت و کدنویسی اون رو خواستید؛ شما در مسیر درستی قرار ندارید و هر جستجو و هزینهای هم که بکنید به احتمال زیاد با شکست مواجه میشه. میدونید چرا نتونستید ویدئویی مخصوص گوگل نت پیدا کنید؟ شما حتی اگر انگلیسی هم سرچ کنید، احتمالا باز پیدا نمیکنید. دلیلش این نیست که در این زمینه کمبود وجود داره. دلیلش این هست که بسیاری از آموزشها نحوه کار با شبکه کانولوشنی در کدنویسی رو توضیح میدن و میگن شبکهای مثل گوگل نت، رزنت و غیره یک شبکه آماده هست و با یک خط دستور قابل استفاده هست. پس نیازی نیست خودتون کد بزنید یا وارد جزئیات کدنویسی اون بشید. بخواییم یک مثال ساده بزنیم؛ شما شبیه آشپزی هستید که بگه آموزش کیک کاکائویی رو دیدم و بلدم درست کنم، اما آموزش کیک پرتقالی رو جایی پیدا نمیکنم. خب مشکل از آموزش نیست، بلکه هنوز مفهوم آشپزی رو درک نکرده و شاید صرفا از سر تقلید و سعی و خطا کیک شوری هم درست کرده باشه!
در واقع شما در یک اتاق تاریکی هستید که هنوز کلید برق رو پیدا نکردید تا این اتاق روشن بشه و شما در خروج رو پیدا کنید. اما در عین حال دنبال کلید برق هم نیستید، از ترس تاریکی به در و دیوار میخورید و دنبال در خروج در این تاریکی هستید. مشاور برای شما کلید برق رو پیدا میکنه.
خب جاش نبود در این پست درباره این مساله صحبت کنیم، ولی خب غصه دانشجو رو میخوریم 😅
پس حرف پایانی اینکه، دربهدر دنبال یک مشاور خوب باشید. ما ویژگیهای یک مشاور ایدهآل برای شما رو گفتیم. اما اگر ویژگیهای نزدیک هم داشت، خوبه. حتما هزینه کنید و یک مشاور خوب بگیرید.
با آرزوی اینکه یک ماه دیگه برگردید و بگید کلید برق اتاق تاریک رو پیدا کردم و دارم به سمت در خروج جرکت میکنم. 💪
‘str’ object has no attribute ‘decode’ این خطا بعد از آموزش شبکه چطور می تونم رفعش کنم؟
سلام
خطای شما، یک خطای کدنویسی هست و به کولب مربوط نمیشه. باید کدها رو دقیق بررسی کنید تا مشکل کار رو پیدا کنید. به نظر میرسه، یک آبجکتی دارید که استرینگ هست، درحالیکه کد انتظار نداشته که استرینگ باشه!
باسلام وخسته نباشید به گروه قوی هوسم
واقعا میشه گفت قویترین سایت فارسی زبان در حوزه دیپ لرنینگ هستید.بااجازه شما این مطلب رو به صورت فایل پی دی اف درآوردم وباذکر منبع قراره دراختیار دوستانم که مبتدی هستند بذارم چون که نمیدونند ازکجا شروع کنند امیدورام همیشه موفق وسربلند باشید.
سلام
کامنت شما، ما رو خوشحال کرد و بهمون انرژی داد. ممنون 🌹🙏
موفق باشید
سلام بسیار هم عالی
میشه بگین چجوری اسامی رو میشه گروه بندی کرد ؟
مثلا میخوایم اسامی رو به چهار دسته ی 20-40 سال، 41-50 سال، 51-65 سال و +66 سال تقسیم کنیم.
برای هر دسته یک اسم انتخاب باید بکنیم و اون رو تو یه ستون جدید به اسم “binning age “بنویسیم.
برای مثال یک فرد 50 ساله در دسته ی دوم قرار میگیره و مقدارش در ستون جدید اسمیه که براش در نظر
گرفتیم ؛ مثل miansal
سلام
سپاس 🌹
به نظر میرسه این سوال شما به گوگل کولب مربوط نیست. بااینحال، ما صورت مساله رو هم متوجه نشدیم و متاسفانه نمیتونیم کمکتون کنیم. 🙏
سلام
ممنون از آموزش خوبتون
من میخوام از یه فایلی که تو گوگل درایو یکی دیگه هست توی کولبم استفاده کنم. چیکار باید بکنم؟ اینم بگم که نمیخوام توی گوگل درایوم ذخیره بشه. میخوام هر بار مستقیم توی کولب دانلود بشه.
سلام
سپاس 🌹🙏
خب قاعدتا شما یک لینک از فایل مدنظرتون دارید. به اون لینک دقیق نگاه کنید. یکجایی از لینک نوشته شده =id و بعد از = یک کد طولانی شامل حروف و عدد قرار داره. اون id فایل هست. حالا با دستور gdown میتونید اون فایل رو توی گوگل کولب دانلود کنید. اینطوری:
gdown –id FILE_ID
بجای FILE_ID، اون id فایل رو که گفتیم بنویسید.
سلام وقتی من میخوام با کولب به گوگل درایو متصل شم نمیشه احتیاج به ران تایپ gpu هم دارم وقتی رو ی جی پی یو میزارم میگه باید تغییر کنه تغییرشم دادم ولی باز اتصال صورت نگرفت چیکارکنم؟
سلام
اتصال گوگل کولب به گوگل درایو، معمولا بدون مشکل انجام میشه. قاعدتا نباید به GPU هم ارتباطی داشته باشه. ما چنین مشکلی رو تا الان تجربه نکردیم.
اما اگر به شما GPU داده نمیشه، ممکن هست به خاطر استفاده زیاد از GPU باشه که به صورت موقت دسترسی شما رو به GPU قطع کرده.
در هرصورت، پیشنهاد میکنیم که با یک جیمیل دیگه وارد گوگل کولب بشید و یک نوتبوک بسازید. حالا این نوتبوک رو به گوگل درایو مدنظرتون وصل کنید. اکانت کولب و گوگل درایوتون میتونه متفاوت باشه.
اگر در اکانت کولب الانتون، فایل نوتبوک دارید که براتون مهم هست و میخوایید اونها رو اجرا کنید؛ نوتبوک رو از منوی فایل دانلود و بعد در کولب جدید آپلود کنید.
سلام
آموزش بسیار عالی بود و کلی چیز یاد گرفتم
ممنون از شما و سایت خوبتون
ان شاء الله همیشه شاد و سلامت باشید
سلام
خوشحالیم که از آموزش راضی بودید.
موفق باشید 🌹
سلام. ممنون از آموش خوبتون
میخواستم بدونم توی کولب راهی هست که وقتی دیتارو با دستور 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 drive
drive.mount('/content/drive')
!ls /content/drive/MyDrive/
2- آپلود فایلها در گوگل کولب و استفاده از هارد ماشین مجازی که به شما داده شده (اطلاعات موقت ذخیره شده و پاک میشه)
from google.colab import files
uploaded = 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