GPU رایگان برای محققان یادگیری عمیق – آشنایی با سرویس ابری Google Colab

97 25,107

بسم الله الرحمن الرحیم

مدتها بود قصد داشتم در مورد سخت افزار و امکانات مورد نیاز محققان یادگیری عمیق مطلب جدیدی بنویسم که متاسفانه فرصت نمیشد. تعطیلات عید یک فرصت کوتاهی رو ایجاد کرد تا بتونم بعضی از مقالات و پروژه های عقب افتاده رو کمی پیش ببرم که انشاءالله طی روزها و هفته های آینده سعی میکنم اون مطالب رو در سایت قرار بدم. یکی از اون مطالب آموزش استفاده از سرویس ابری رایگان Google Colab بود که امروز با هم به یک اشنایی اولیه و شیوه کار با اون میرسیم. از بین عزیزان ایرانی مهندس ملک زاده عزیزمون قبلا لطف کرده بودن و در وبلاگشون توضیحات خوبی رو در مورد Google Colab ارائه کرده بودن (اینجا رو ببینید). در آموزش زیر من سعی کردم بصورت گام بگام تقریبا همه موارد اولیه رو پوشش بدم و عزیزان براحتی بتونن از این سیستم تا زمانی که رایگان هست بهره کافی رو ببرند. در فرصت های آینده این آموزش انشاءالله به روز میشه.

آشنایی با سیستم ابری Google Colab :

یکی از مهمترین دغدغه های محققان حوزه یادگیری عمیق فراهم آوری سخت افزار و بستر مورد نیاز جهت آموزش مدلهای عمیق است. در دو مقاله قبلی ما به بررسی کارتهای گرافیک مناسب پرداختیم و سعی کردیم تا دید مناسبی نسبت به گزینه های در دسترس و میزان اثربخشی آنها برای محققان گرامی ارائه دهیم. شوربختانه به دلیل ناآرامی در بازار ارز و همینطور شروع موج جدیدی در درزمینه Bitcoin mining شاهد افزایش چند برابری قیمت کارتهای گرافیک در سراسر کشور بودیم و طیف زیادی از محققان و دانشجویان را در زمینه تهیه یک سیستم مناسب با مشکل مواجه کرده است. ما سعی میکنیم به این مطلب طی چند مقاله بعدی بپردازیم و راهکارهای گوناگونی در این زمینه ارائه دهیم . در اولین بخش ازاین سری مقالات ما به سرویس جدید و رایگان گوگل بنام Google Colab خواهیم پرداخت که یک سرویس ابری رایگان برای محققان حوزه یادگیری عمیق و یادگیری ماشین است.

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

توضیحات در مورد Google Colab :

Google Colab سرویس ابری ارائه شده از طرف گوگل است که بشما اجازه برنامه نویسی با زبان پایتون را داده و امکان نصب و کار با پکیج های مختلف زبان پایتون و فریم ورکهای مطرح یادگیری عمیق همانند Tensorflow, Keras, Pytorch, etc را فراهم می آورد. Google Colab امکانی را فراهم آورده است که از طریق آن چند توسعه دهنده میتوانند بر روی یک سورس کد به اشتراک گذاشته شده به فعالیت بپردازند و به همین جهت محیطی غنی برای توسعه و تحقیقات توسط افراد مختلف یک تیم است.

نکته قابل توجه در رابطه با این سرویس، جدای از فراهم آوری بستری آماده به کار برای استفاده از فریم ورکهای یادگیری عمیق، ارائه GPU رایگان به کاربران است که اثربخشی این سرویس را عملا چندین برابر کرده است. در این سرویس به هر کاربر یک Nvidia Tesla T4 (سابقا یک Tesla K80 GPU ارائه میشد) ارائه میشود. که کاربر میتواند از آن برای توسعه و اجرای برنامه های کاربردی و یا تحقیقاتی در حوزه یادگیری عمیق بهره برداری نماید.

شیوه استفاده :

در این بخش به چگونگی استفاده از این سرویس میپردازیم و خواهیم دید چگونه میتوان از این سرویس ابری فوق االعاده بهره برد :

برای شروع اگر حساب کاربری در گوگل ندارید یک حساب کاربری ایجاد کنید. برای اینکار میتوانید از اینجا شروع کنید. در گام بعد کافیست به آدرس https://colab.research.google.com مراجعه کنید.

با مراجعه به لینک بالا با صفحه خوش آمد گویی به شکل زیر مواجه میشوید:

در این صفحه اطلاعات کلی به منظور آشنایی اولیه شما با محیط Google Colab ، بشما ارائه میشود. چیزی که شما با آن مواجه خواهید بود و از طریق آن میتوانید از خدمات این سرویس استفاده کنید یک Jupyter notebook است.

Jupyter Notebook چیست؟

مقدمه

Jupyter Notebook یک محیط محاسباتی تعاملی[۱] است که کاربران را قادر میسازد تا اسنادی مبتنی بر نوت بوک، را تولید نمایند که شامل کد زنده، ویجت های تعاملی ، نمودارها، متون توضیحی ، معادلات، تصاویر و ویدئو میباشند.

این اسناد ، رکوردی کامل و خودکفا[۲] از یک محاسبه را فراهم آورده و قابلیت تبدیل به فرمت های گوناگون و همچنین به اشتراک گذاری از طریق email, DropBox، سیستم های کنترل نسخه (همانند git/GitHub ) و یا nbviewer.jupyter.org را دارند.

اجزاء

یک نوت بوک جوپیتر(Jupyter Notebook) از سه مولفه تشکیل میشود:

  • برنامه تحت وب نوت بوک: یک برنامه مبتنی بر وب تعاملی است که برای نوشتن و اجرای کد بصورت تعاملی و تولید اسناد مبتنی بر نوت بوک مورد استفاده قرار میگیرد.
  • کرنل ها: فرایندهای مجزایی که از طریق برنامه تحت وب نوت بوک اجرا شده و کدهای کاربران را تحت یک زبان برنامه نویسی مشخص شده اجرا کرده و خروجی آنرا به برنامه تحت وب نوت بوک بازمیگرداند. کرنل همچنین مدیریت مواردی همانند محاسبات مورد نیاز ویجت های تعاملی، auto completion، و دیباگ و… را برعهده دارد.
  • اسناد نوت بوک: اسناد خودکفایی که شامل بازنمایشی از تمامی محتویان قابل مشاهده در یک برنامه تحت وب نوت بوک  شامل ورودی و خروجی مرتبط با محاسبات، متون توضیحی ، معادلات، تصاویر، و … است. هر سند نوت بوک کرنلی مخصوص به خود دارد.

برنامه تحت وب نوت بوک

برنامه تحت وب نوت بوک کاربران را قادر میسازد تا :

  • بتوانند در مرورگر خود با امکاناتی نظیر syntax highlighting ، حاشیه گذاری خودکار و code completion به برنامه نویسی بپردازند .
  • بتوانند کد خود را در داخل مرورگر اجرا کرده و نتایج محاسبات را به همراه کدی که آنها را تولید کرده مشاهده کنند.
  • بتوانند نتایج محاسبات خود را با بازنمایی های غنی ، همانند HTML,LaTeX,PNG,SVG,PDF,etc مشاهده کنند.
  • بتوانند با استفاده از زبان Markdown متون توضیحی ایجاد کنند.
  • در متون توضیحی خود بتوانند با استفاده از سینتکس  LaTeX  معادلات ریاضی را نوشته  که در مرورگر توسط MathJax بصورت طبیعی نمایش داده میشوند.

Kernels

از طریق معماری ارسال پیام و کرنل Jupyter ، نوت بوک به کد این اجازه را میدهد تا در گستره ای از زبانهای برنامه نویسی مختلف اجرا گردد. برای هر سند نوت بوک که کاربری آنرا باز میکند، یک برنامه تحت وب کرنلی را که آن کد را برای آن نوت بوک اجرا میکنید، اجرا مینماید. هر کرنل قادر به اجرای کد در یک زبان برنامه نویسی بوده و برای زبانهای برنامه نویسی زیر کرنل های متناظر در دسترس هستند:

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

هرکدام از این کرنلها از طریق برنامه تحت وب نوت بوک و مرورگر وب که از JSON بر روی پروتکل های پیام رسانی ZeroMQ/WebSockets بهره میبرند ارتباط برقرار میکنند که در اینجا مورد بررسی قرار گرفته است. بیشتر کاربران نیازی به دانستن این جزییات ندارند، اما دانستن این مبحث در درک اینکه “کرنل کد را اجرا میکند” کمک میکند.

اسناد نوت بوک

اسناد نوتبوک حاوی ورودی ها و خروجی های یک جلسه تعاملی و همچنین متون توضیحی که به همراه کد وجود دارد اما قرار نیست اجرا شود میباشند. خروجی غنی تولید شده توسط کد در حال اجرا، شامل HTML، تصاویر، ویدئو، نمودارها و.. در داخل نوت بوک تعبیه میشوند که این امر سبب ایجاد یک رکورد خودکفای (خود دار self contained) کامل از محاسبات میشود.

زمانی که شما یک برنامه تحت وب نوت بوک را بر روی کامپیوتر خود اجرا میکنید، اسناد نوت بوک صرفا فایلهایی بر روی فایل سیستم محلی شما با پسوند .ipynb هستند. این مساله بشما اجازه میدهد تا از جریان کاری مشابه برای ساماندهی نوت بوکهای خود در پوشه های مختلف بهره ببرید و آنها را با دیگران به اشتراک بگذارید.

نوت بوکها شامل دنباله ای خطی از چند سلول هستند. این سلول ها به ۴ نوع مختلف تقسیم میشوند :

سلول کد : ورودیو خروجی کد زنده که توسط یک کرنل اجرا میشود

سلول Markdown : متون توضیحی و تفصیلی به همراه معادلات لاتکس تعبیه شده احتمالی

سلولهای سرتیتر: ۶ سطح از ساماندهی و فرمت دهی سلسله مراتبی

سلولهای خام : متون بدون فرمت را شامل میشود ، بدون هیچ تغییری زمانی که نوت بوکها به فرمتهای دیگیری با استفاده از nbconvert تبدیل میشوند.

اسناد نوت بوک بطور داخلی بصورت  `JSON <https://en.wikipedia.org/wiki/JSON>`__ data  هستند که با  binary values `base64 <http://en.wikipedia.org/wiki/Base64>`__  انکود شده اند. این کار باعث میشود که بتوان آنها را توسط هر زبان برنامه نویسی ای خواند یا مورد تغییر قرار داد. از آنجایی که JSON یک فرمت متنی است، اسناد نوت بوک با سیستم های کنترل نسخه سازگار هستند.

نوت بوکها را میتوان با استفاده از برنامه کاربردی nbconvert جوپیتر به فرمتهای ایستا شامل HTML، reStructeredText ، LaTeX، PDF و اسلاید شو (reveal.js)  تبدیل نمود.

علاوه بر آن، هر سند نوت بوک در دسترس از طریق یک لینک عمومی در گیت هاب و یا غیره را میتوان از طریق nbviewer به اشتراک گذاشت. این سرویس سند نوت بوک را از طریق URL بارگذاری کرده و آن را در قالب یک صفحه ایستای وب (static web page) نمایش میدهد. صفحه وب نتیجه شده را سپس میتوان بدون نیاز به نصب نوت بوک جوپیتر با سایرین به اشتراک گذاشت.

آشنایی با بخشهای مختلف :

در صفحه باز شده ، مشاهده میکنید که در سمت چپ تصویر چندین منو وجود دارد. در زیر منو نیز ، نوار ابزاری با چند عملیات محدود قرار داده شده است. از میان گزینه های مختلف، گزینه File, Runtime و Tools بیشتر حائز اهمیت هستند بنابر این ما به توضیح این منو ها میپردازیم.

برای شروع بر روی منو File کلیک میکنیم. با انجام این کار با تصویر زیر مواجه میشویم:

گزینه اول Locate in Drive : این گزینه زمانی فعال میشود که شما در حال کار بر روی یک سند notebook ذخیره شده در درایو خود باشید. با کلیک بر روی این گزینه شما به Google Drive خود منتقل شده و سند مورد نظر انتخاب میشود. این گزینه در زمانی که شما در حال کار بروی چند سند هستید و یا قصد به اشتراک گذاری، تهیه بک آپ و… دارید بسیار مفید خواهد بود.

New Python 2 Notebook/New Python 3 Notebook :

این گزینه ها بشما اجازه میدهند تا از نسخه پایتون ۲ و یا ۳ در سند نوت بوک خود استفاده کنید. بعد از انتخاب هر نسخه، امکان تغییر نسخه پایتون در آن سند از طریق زیر منو Runtime ممکن است.

Open Drive notebook… : با انتخاب این گزینه میتوانید به محتویات Google Drive خود دسترسی پیدا کرده و اسناد نوت بوک مورد نظر خود را بارگذاری کنید.

Open recent… :  این گزینه لیستی از آخرین اسناد نوت بوک که اخیرا مورد استفاده قرار داده اید را بشما نمایش داده و میتوانید برای بارگذاری آنها از این گزینه نیز استفاده کنید.

Upload a notebook… : از طریق این گزینه میتوانید یک سند Notebook را از سیستم خود بر روی Google Drive خود آپلود کرده و در Google Colab بارگذاری نمایید. دقت نمایید بعد از Upload شدن سند، سند بصورت خودکار بارگذاری میشود و تغییراتی که در سند قبلی داده اید از بین خواهد رفت. پس قبل از استفاده از این گزینه اطمینان حاصل کنید سند فعالی وجود نداشته یا تغییرات مورد نظر خود را ذخیره کرده باشید.

Rename: از این گزینه برای تغییر نام سند notebook استفاده میشود.

Move to trash : برای حذف یک سند از این گزینه استفاده میشود.

Save a copy to Drive… : از این گزینه برای ذخیره یک رونوشت از سند فعال فعلی در Google Drive شما استفاده میشود. با کلیک بر روی این گزینه، سند جدید هم بلادرنگ در صفحه جدیدی اجرا میگردد.

Save: از این گزینه برای ذخیره سازی تغییرات استفاده میشود

Save and pin revision : از این گزینه برای ذخیره تغییرات و همینطور ثبت یک نسخه بازبینی (revision) استفاده میشود.

Revision history: با کلیک بر روی این گزینه یک نوار سیاه رنگ در انتهای تصویر نمایش داده میشود بصورت زیر :

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

Download Ipynb/py : از این گزینه ها میتوانید برای دانلود سند نوت بوک جاری در قالب Jupyter notebook و یا فایل python معادل استفاده نمایید. زمانی که گزینه Download .py را انتخاب میکنید. تمامی متون توضیحی،… بصورت کامنت تبدیل میشود تا اینگونه بتوان براحتی این فایل را نیز اجرا و مورد استفاده قرار داد.

دقت نمایید اگر  در حال کار بر روی یک سند نوت بوک جاری باشید منو File بصورت زیر خواهد بود. در این صورت شما گزینه دیگری تحت عنوان Open in playground خواهید داشت. با کلیک بر روی این گزینه وضعیت شما از online به offline تغییر پیدا خواهد کرد. در این حالت تغیرات شما ذخیره نشده و تنها از طریق کلیک بر روی دکمه Copy to Drive که بر روی نوار ابزار زیرین تعبیه شده میتوانید تغییرات اعمالی را در فایل اصلی ثبت و اعمال نمایید. از این گزینه برای تست بی دغدغه و آزمایشی ، بدون نگرانی از اعمال تغییرات نهایی در فایل اصلی استفاده میشود.

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

زیر منو Runtime : از این زیر منو در جهت اجرای یک یا همه سلول ها در یک سند نوت بوک استفاده میگردد. شما میتوانید تنها یک سلول و یا همه سلول ها را به ترتیب اجرا نمایید. همینطور میتوانید از طریق interrupt execution به اجرای یک سلول خاتمه دهید و یا از طریق Restart Runtime نسبت به شروع مجدد محیط اجرا اقدام کنید. از گزینه Connect to runtime… نیز برای اتصال به کرنل جدید استفاده میشود. بعد از مدتی عدم فعالیت محیط اجرای تخصیص یافته بشما منقضی میشود و برای شروع دوباره نیاز است بر روی این گزینه کلیک نمایید.

از طریق Change runtime type شما میتوانید نسخه پایتون (۲ و یا ۳) را در سند نوت بوک جاری خود مشخص کنید همچنین از طریق همین گزینه میتوانید پشتیبانی از GPU را برای محاسبات خود فعال کنید.

از بخش Tools نیز میتوانید به زیر منو Preferences  دست یافته و تغییرات مورد نظر نظیر نمایش شماره سطرها و … را اعمال نمایید.

نحوه اجرا  (یک مثال )

بعد از اینکه از منو File گزینه Python 3 Notebook را انتخاب کردید با صفحه ای همانند زیر مواجه میشویم:

در سلولی که وجود دارد میتوانیم اقدام به برنامه نویسی کنیم و بعد از اتمام کدنویسی با کلیک بر روی دکمه سیاه رنگ که در سمت چپ سلول وجود دارد کد نوشته شده را اجرا مینماییم. برای اجرا همچنین میتوانیم از کلیدهای ترکیبی Ctrl+Enter نیز بهره ببریم.

میتوانیم تمامی کدهای مورد نیاز خود را در همین سلول نوشته و اجرا کنیم اما چیزی که در اسناد جوپیتر بسیار رایج است نوشتن کد در سلولهای مختلف است بگونه ای که بتوان هر بخش را بطور جداگانه مورد بررسی و یا توضیح بیشتر قرار داد.

برای اضافه کردن سلول های جدید میتوان از منو Insert بهره برد و یا از نوار  ابزاری که در زیر منو وجود دارد استفاده کرد. با کلیک بر روی Code سلول جدیدی اضافه میشود. در سمت راست هر سلول یک نوار شناور وجود دارد که از آن میتوان برای اضافه کردن توضیحات و یا سلول کد جدید بهره برد.

در صورت حذف اشتباهی یک سلول میتوانید با استفاده از کلید های ترکیبی Ctrl+Shift+Z اعمال اخیر خود را بازیابی کنید.

با بردن اشاره گر ماوس در بین دو سلول نوار شناور جدیدی نمایان میشود که با کلیک بر روی گزینه های آن میتوان سلول جدیدی ایجاد نمود. در اینجا ما بر روی Text کلیک میکنیم تا توضیحاتی در رابطه با کد زیرین ارائه کنیم :

بعد از اعمال تغییرات، نتیجه بصورت زیر خواهد بود :

و متعاقبا نتیجه نهایی بصورت زیر خواهد بود :

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

نصب package یا کتابخانه جدید :

به منظور نصب یک پکیج یا کتابخانه جدید در محیط Jupyter notebook میتوان از دستور !pip install بهره برد. با  استفاده از از عملگر ! میتوان دستورات سیستمی را اجرا نمود. با استفاده از این عملگر  میتوان دستوراتی که در ترمینال میتوان وارد کرد در سلول کد وارد و اجرا نمود. به همین صورت ما از این عملگر برای اجرای pip بهره میبریم .پکیج هایی همانند tensorflow و keras و numpy بصورت پیشفرض نصب و قابل استفاده هستند.

در ادامه ما سعی میکنیم با دستور !pip install -q matplotlib-venn  نسبت به نصب matplotlib-venn اقدام کنیم . ابتدا یک سلول جدید ایجاد کرده و سپس دستور را وارد و اجرا میکنیم :

با اجرای این سلول خروجی ای مشاهده نمیکنیم! علت این امر وجود سویچ –q است . برای مشاهده لاگ دستورات اجرا شده  کافیست دستور را بدون این سویچ اجرا کنیم. خروجی بصورت زیر خواهد بود :

و نهایتا بعد از این کار میتوان از پکیج جدید بهره برد :

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

بعد از نصب موفقیت آمیز  کفی :

خلاصه :

سلول ها:

یک نوت بوک لیستی از چند سلول است. هر سلول یا حاوی متن توضیحی و یا کد قابل اجرا و خروجی آن است. برای انتخاب یک سلول کافیست روی آن کلیک کنید.

سلول های کد

در زیر یک سلول کد را مشاهده میکنید.

زمانی که دکمه نوار ابزار به  Connected اشاره میکند، بر روی سلول مربوطه کلیک کنید تا آنرا انتخاب کرده باشید  و بعد محتویات سلول را از طرق زیر اجرا نمایید :

  • با کلید کردن بر روی آیکون Play در حاشیه سمت چپ سلول;
  • با استفاده از کلید های ترکیبی Ctrl+Enter و یا CMD در مک میتوانید بصورت درجا محتویات سلول را اجرا کنید.
  • با استفاده از کلید های ترکیبی Shift+Enter میتوانید محتویات سلول را اجرا کرده و فوکس را به سلول بعدی انتقال دهید و یا در صورتی که سلولی وجود ندارد یک سلول جدید ایجاد کنید.
  • با استفاده از کلید های ترکیبی Alt+Enter میتوانید سلول کد را اجرا کرده و یک سلول کد جدید دقیقا بعد از سلول فعلی ایجاد کنید.

گزینه های اضافی دیگری باری اجرای بعضی و یا همه سلول ها در منو Runtime و جود دارد که میتوانید از آنها نیز استفاده کنید.

سلولهای متنی

تصویر زیر یک سلول متنی را نمایش میدهد. شما میتوانید با دابل کلیک بر روی سلول، محتویات این نوع سلول را ویرایش کنید. سلول های متنی از سینتکس markdown بهره میبرند. با استفاده از این قابلیت شما میتوانید معادلات ریاضی را با استفاده از LaTeX به نگارش در آورید . این محتویات سپس توسط MathJax  که در مرورگر شما تعبیه شده است رندر شده و غنا و زیبایی خاصی به نوشته های شما میبخشد. برای نگارش با زبان LaTeX کافیست دستور مورد نظر خود را بین دو علامت $ قرار دهید. بعنوان مثال $sqrt{3x-1}+(1+x)^2$ بصورت 

*** QuickLaTeX cannot compile formula:
$sqrt{3x-1}+(1+x)^2$ 

*** Error message:
Display math should end with $$.
leading text: $$sqrt{3x-1}+(1+x)^2$ 

 نمایش داده خواهد شد. در تصویر زیر یک سلول متنی در حال ویرایش را مشاهده میکنید. در بخش بالایی متن و در بخش پایینی پیش نمایش متن نگاشته شده قرار دارد.

در تصویر زیر سلول متنی بعد از خروجی از حالت ویرایش را مشاهده میکنید. با زدن Shift+Enter و یا کلیک بر روی سلول کدی دیگر از حالت ویرایش خارج میشویم.

در زیر نمونه دیگری از سلول متنی را مشاهده میکنید :

افزودن و حرکت دادن سلول ها

شما میتوانید با استفاده از دکمه های + CODE و + TEXT که با حرکت دادن نشانگر ماوس در بین سلول ها بشما نمایش داده میشوند سلول های جدیدی اضافه کنید. این دکمه ها در نوار ابزاری که زیر منو وجود دارد نیز قرار دارند و کلیک بر روی آنها سبب ایجاد یک سلول جدید در زیر سلول انتخاب شده فعلی میشود.

شما میتوانید یک سلول را با انتخاب آن و سپس کلیک بر روی Cell Up و یا Cell Down از نوار ابزار فوق الذکر حرکت دهید.

سلول های پشت سر هم را میتوان از طریق lasso selection” ” انتخاب کرد. این کار با کشیدن از خارج یک سلول و از بعد از بین گروهی از سلول ها قابل انجام است. سلول های غیر مجاور را نیز میتوان با کلیک کردن و بعد نگه داشتن کلید Ctrl بطور متوالی انتخاب نمود. به همین صورت با استفاده از کلید Shift بجای Ctrl میتوان تمامی سلول های ما بین را نیز انتخاب نمود.

کار کردن با پایتون

شما میتوانید فرایند های پایتون که مدت زمان بسیاری در حال اجرا هستند را متوقف کنید. برای اینکار کافیست سلول مورد نظر را انتخاب کرده و سپس از منو Runtime گزینه Intrrupt execution را جهت خاتمه دادن به اجرای کد در حال اجرا انتخاب کنید. همچنین میتوانید از کلیدهای ترکیبی Ctrl+M – I برای خاتمه دادن بهره ببرید. برای مشاهده دستورات بیشتر میتوانید از کلیدهای ترکیبی Ctrl+Shift+P استفاده کنید و یا از منو Tools بر روی گزینه Command palette استفاده نمایید.

System aliases

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

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

به منظور پاک کردن خروجی یک سلول، ابتدا سلول حاوی خروجی را انتخاب کرده و سپس از نوار ابزار بالای سلول بر روی دکمه x کلیک نمایید. با قرار دادن اشاره گر ماوس بر روی هر کدام از دکمه ها میتوانید به کارکرد هرکدام پی ببرید. علاوه بر این روش، شما میتوانید با راست کلیک کردن بر روی حاشیه سمت چپ سلول حاوی خروجی و انتخاب Clear output از منو نمایش داده شده، نسبت به پاک کردن خروجی اقدام نمایید.

شما میتوانید هر فرایند دیگری را نیز توسط ! با استفاده از ترکیب رشته ها در متغییرهای زبان پایتون اجرا نمایید. دقت کنید که نتیجه حاصله را نیز میتوانید به یک متغییر دیگر انتساب دهید.

Tab-completion and exploring code

شما میتوانید از قابلیت کامل شدن خودکار یا auto completion در ژوپیتر نوت بوک بهره ببرید. برای استفاده از این قابلیت کافیست از کلید tab استفاده کنید. شیوه کار به این صورت است که بعد از نوشتن بخشی از یک کلمه کافیست ازکلید tab استفاده کنید. ادامه کلمه بطور خودکار کامل میشود. اگر چند نمونه شبیه به هم وجود داشته باشند لیستی به شما نمایش داده میشود که میتوان گزینه صحیح را انتخاب نمود. به همین شکل میتوان از متدها و کلاس ها و… موجود در یک فضای نام یا کلاس و… نیز مطلع شد. بعنوان مثال بعد از import numpy as np و نوشتن np. و زدن  tab لیستی شامل توابع، اشیاء و…  گوناگون در دسترس بشما نمایش داده خواهد شد.  به همین شکل با فشردن کلید tab بعد . میتوان به توابع عضو و… بصورت سلسله مراتبی دسترسی یافت.

با فشردن کلید tab بعد از ) یک tooltip حاوی اطلاعات اسختراجی از docstring بشما نمایش داده میشود.

شما میتوانید با تایپ ?   بعد از متد و یا شی مورد نظر خود و فشردنCtrl+Enter به اطلاعات کاملی دست پیدا کنید.:

Exceptions ها نیز بخوبی فرمت بندی شده اند و بشما در یافتن مشکل در کد خود کمک ویژه ای میکنند:

خروجی های غنی و تعاملی

خروجی تولید شده تنها محدود به متن نیست و میتوان گستره غنی ای از رسانه ها را نیز بعنوان خروجی نمایش داد. بعنوان مثال در تصویر زیر چگونگی نمایش یک نمودار را مشاهده میکنید :

ادغام با Google Drive

برنامه Colaboratory گوگل با Google Drive ادغام شده است. این امر به شما اجازه به اشتراک گذاری، کامنت گذاری، و همکاری با چندین نفر بر روی یک سند را میدهد.

دکمه Share (در سمت راست و بالای نوار ابزار) بشما اجازه به اشتراک گذاری نوت بوک و همچنین کنترل مجوزهای روی آن را میدهد.

  • File->Make a Copy باعث ایجاد یک رونوشت از سند جاری در Google Drive شما میشود.
  • File->Save باعث ذخیره تغییرات شما بر روی فایل در Google Drive شما میشود. و گزینه File->Save and pin revision باعث ثبت نسخه بازبینی شما میشود بگونه ای که از تاریخچه بازینی شما حذف نشود.
  • File->Save and checkpoint باعث ثابت سازی نسخه شما میشود تا در بخش تاریخچه حذف نگردد..
  • File->Revision history تاریخچه نسخه های بازبینی را بشما نشان میدهد.
  • چند نفر در یک آن میتوانند یک سند یکسان را ویرایش کنند . همانند Google Docs شما میتوانید شرکتکنندگان (همکاری کنندگان کولبریتورها)! را هم در داخل سند (بالا سمت راست سمت چپ دکمه کامنت) و هم در داخل یک سلول مشاهده کنید (سمت راست یک سلول)
ارتباط با فایلهای ذخیره شده در Google Drive خواند و نوشتن :

برای دسترسی به فایلهای آپلود شده خود در Google Drive روشهای مختلفی وجود دارد. یکی از رایج ترین روشها استفاده از قابلیت Drive Fuse است که به شما اجازه میدهد درایو گوگل خود را mount کرده و از آن استفاده کنید.

سابقا برای استفاده ازاین روش نیاز به نصب و پیکربندی ocamlfuse بود که در ادامه توضیحات آن امده است. اما در آخرین بروز رسانی برای اتصال به گوگل درایو و استفاده از آن در گوگل کولب تنها نیاز به وارد کردن کدها بصورت زیر دارید:

در این قسمت ما نامی را جهت mount کردن گوگل درایو خود در سیستم گوگل کولب مشخص میکنیم تا در ادامه بتوانیم با آدرس دهی به این نام (مسیر) بتوانیم به فایلها و پوشه های خود در گوگل درایو دسترسی پیدا کنیم .

همانطور که در تصویر مشاهده میکنید. بعد از اجرای کدهای مورد نظر از شما خواسته میشود تا برای احراز هویت بر روی لینک تولید شده کلیک کرده و توکن مورد نظر را وارد کنید.

بعداز تایید هویت درایو شما تحت نام (مسیری) که مشخص کردید با موفقیت mount میشود.

حال براحتی میتوانید به فایلهای خود دسترسی داشته باشید. دقت کنید که درایو اصلی شما تحت نام My Drive مشخص شده است و برای دسترسی به فایلهای خود باید این نام را نیز لحاظ کنید. این مساله در تصویر زیر کاملا مشخص است :

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

شما همچنین میتوانید از نوار کناری گوگل کولب پوشه ها و فایلهای خود در گوگل درایو خود را مشاهده کنید. بدین منظور در نوار کناری (سمت چپ) بر روی تب Files کلیک نمایید. با این کار با صفحه زیر مواجه میشوید :

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

حال برای دسترسی به درایو خود کافیست بر روی نام انتخابی خود کلیک کنید : (ما اسم mygoogledrive را انتخاب کرده بودیم بنابر این همان را انتخاب میکنیم)

کدهای استفاده شده در تصاویر بالا :

 

روش فوق با استفاده از رپر ocamlfuse :

روش رایج استفاده از رپر ocamlfuse است که به شما اجازه میدهد درایو گوگل خود را mount کرده و از آن استفاده کنید.

به همین منظور کدهای زیر را در نوت بوک جاری خود کپی و اجرا کنید :

در گام بعد توکن های احراز هویت برای برنامه Google Colab را ایجاد میکنیم:

بعد از اجرای این بخش با تصویری همانند شکل زیر مواجه میشید. در اینجا باید بر روی لینک نمایش د اده شده کلیک کنید. بعد از اینکار با اکانتی که در Google Colab فعالیت میکنید لاگین کرده و بر روی Allow کلیک کنید.

بعد از انجام اینکار در صفحه جدید کد احراز هویت شما نمایش داده میشود کد مورد نظر را کپی کرده و در مرحله اول در بخش Enter verification code قرار دهید و بعد Enter کنید.

در ادامه همین مراحل را برای احراز هویت کتابخانه FUSE انجام میدهیم.

بعد از کپی کردن کد تایید :

و در انتها نیز درایو خود را mount کرده و مورد استفاده قرار میدهیم :

به همین صورت میتوانید فایلهای خود را در Google Drive آپلود کرده و به پوشه های مورد نظر خود دسترسی پیدا کرده و نسبت به اجرای برنامه ها و یا …. اقدام کنید.

 

آپلود یا دانلود فایلها :

در مواردی که سورس کد شما حاوی چند ماجول و فایل دیگر میباشد میتوانید با استفاده از دستور زیر  نسبت به اپلود آنها اقدام کنید .

به همین صورت به منظور دانلود فایل یا فایلهایی میتوانید از دستور زیر استفاده کنید :‌

 

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

 

نکته : از تاریخ ۲۶ دی ۱۳۹۷ گوگل از کارتهای گرافیک بسیار قدرتمند T4 در سرویس Google Colab خود پرده برداری کرد. این کارت ها از ۱۶ گیگابایت حافظه ازنوع DDR6 بهره برده و از دقت اعشار مختلف (fp32,fp16, INT8 و INT4 ) و همچنین TensorCore های جدید شرکت انویدیا پشتیبانی میکنند و به این علت کارایی بشدت بالایی نسبت به کارتهای نسل قبل از خود ارائه میدهند. در رابطه با آموزش mixed precision اینجا بیشتر مطالعه کنید.

 

سید حسین حسن پور

بهار ۱۳۹۷

 

[۱] interactive computing environment

[۲] self-contained

97 نظرات
  1. deepnet می گوید

    سلام
    نصب کفی چقدر این ساده بود با یک دستور نصب شده در سیستم خودمون هم اینجوری راحتره ؟ نکنه کفی ۲ رو نصب میکنه

    1. سید حسین حسن پور متی کلایی می گوید

      سلام. نه از اوبونتو ۱۷ این شیوه نصب اضافه شده . ورژن های قبلی کما فی السابق به همون صورت باید نصب بشن .
      البته دقت کنید که شیوه کامپایل کفی به شیوه معمول بهتر هست . من انشاءالله سعی میکنم در یک مطلب جداگانه کامل در مورد شیوه نصب کفی (شیوه های مختلف و…) صحبت کنم و مطلب بزارم .

  2. pooling می گوید

    بسیار متلب جالبی بود.

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

    1. سید حسین حسن پور متی کلایی می گوید

      سلام
      خواهش میکنم.
      انشاءالله در قسمت بعدی من گزینه های دیگه ای رو هم معرفی میکنم. هم از نظر تهیه سخت افزار و هم سرویس هایی از این دست.

  3. جلال می گوید

    سلام ممنون از این مطلب ارزشمند
    یه سوال دارم توی colab گوگل وقتی یه مدل را که با کراس آموزش داده شده را بخوایم توی درایو گوگل ذخیره کنیم از چه دستوری باید استفاده بشه ؟

    1. جلال می گوید

      #Save it to google drive use Pydrive
      # Install the PyDrive wrapper & import libraries.
      # This only needs to be done once in a notebook.
      pip install -U -q PyDrive#a!
      from pydrive.auth import GoogleAuth#a
      from pydrive.drive import GoogleDrive#a
      from google.colab import auth#a
      from oauth2client.client import GoogleCredentials#a
      # Authenticate and create the PyDrive client.
      # This only needs to be done once in a notebook.
      auth.authenticate_user()#a
      gauth = GoogleAuth()#a
      gauth.credentials = GoogleCredentials.get_application_default()#a
      drive = GoogleDrive(gauth)#a

      # Create & upload a file.
      model.save(‘YUOR MODEL.h5’)#a
      uploaded = drive.CreateFile({‘title’: ”YUOR MODEL.h5′})#a
      uploaded.SetContentFile(‘YUOR MODEL.h5’) #a
      auploaded.Upload()#a
      rint(‘Uploaded file with ID {}’.format(uploaded.get(‘id’)))#a

      1. pooling می گوید

        ممنون از راهنمایی شما

        البته ممکن است خط اول خطا بدهد. (برای من اینگونه بود) بنابراین بهتر است از
        !pip install pydrive –upgrade
        استفاده شود.

    2. سید حسین حسن پور متی کلایی می گوید

      من مدتهاست با کراس و تنسورفلو کار نکردم. از طرفی برای ذخیره فایل در همون side bar‌ بخش کد میتونید به نمونه کدهای مختلف برای ذخیره سازی دست پیدا کنید. بعد از اینکه درایو رو مونت کردید فکر نمیکنم مشکلی داشته باشید هرچند مطمپن نیستم و باید چک کنید.

  4. deep learning student می گوید

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

    1. سید حسین حسن پور متی کلایی می گوید

      سلام
      یک بخش مربوط به معرفی سرویس های ابری دیگه مثل floydhub‌ و امثالهم بود بخش دیگه مطالب در مورد خرید کارت گرافیک دست دوم از داخل یا خارج کشور که دقت کنن کارتهای تقلبی بهشون ندن چون بعد از موج bitcoin کارتهای تقلبی مختلف و زیادی تو ebay‌و… شروع به فروش کردن خصوصا چینی های متقلب. بحث بعدی در مورد تهیه لپ تاپ بجای PC‌ بود و یه براورد قیمت و اینکه چطور انتخاب کنیم. در ادامه هم میخواستم مطالبی در مورد نحوه اتصای یک کارت گرافیک PC به لپ تاپ رو عنوان کنم. مورادی از این دست .
      شما که قصد خرید کارت داریداگر بودجه شما اجازه میده ۱۰۸۰TI‌اگر نه به ترتیب بیایید پایین . ۱۰۸۰ ۱۰۷۰ ۱۰۶۰ شش گیگی و بعد هم ۱۰۵۰TI چهار گیگی (البته اگر دست دوم ۹۸۰TI پیدا کردید با ۶ گیگ بهتره)

  5. ملک زاده می گوید

    خیلی ممنون آقای حسن پور، لطف کردید.

    1. سید حسین حسن پور متی کلایی می گوید

      سلام.
      زنده باشی مهندس ملک زاده عزیز 🙂

  6. سرور می گوید

    سلام اقای حسن پور ممکن هست ایمل تان را به من اعلام کنید در خصوص یک سری سوالات و مشاورت در مورد کار تحقیقاتی اینجانب. عاجزانه منتظر دریافت ایمیل از شما هستم. بسیار بسیار کمک بزرگی به من خواهید کرد.
    ایمیل بنده:
    soroorgh24@gmail.com

    1. سید حسین حسن پور متی کلایی می گوید

      سلام.
      از بخش تماس با ما میتونید پیامتون رو ارسال کنید

  7. deepnet می گوید

    سلام
    در جوپیتر نوتبوک این دوتا دستوراتی که استفاده میشه دقیقا کارکردشون چی هست ؟
    In [1]: %load_ext autoreload

    In [2]: %autoreload 2

    میدونم برای بارگزاری اتوماتیک ماژوال ها هست ولی هیچ حسی بهش ندارم دقیقا کارکردش چی هست یعنی چی اتوماتیک مازول ها لود میشن ؟ بزاریم نزاریم چه فرقی میکنه ؟

    1. سید حسین حسن پور متی کلایی می گوید

      سلام
      برای لود کردن ماجول شما بصورت خودکار هست. مثلا شما چندتا فایل داری میری اجرا میکنی بعد دوباره تو ادیتور فایل رو تغییر میدی سید میکنی.
      برای اینکه تغییراتت در حالت عادی اعمال بشه مجبوری کلا ریلود کنی ماجول رو از اول. اما با اینکار هر ماجول بطور خودکار هربار ریلود میشه (قبل اینکه یک خط کدش اجرا بشه)
      اون ۲ هم یه کد هست که به معنای ریلود خودکار همه ماجول هاست .
      ارگومانهای دیگه اش رو میتونی از اینجا ببینی :
      https://ipython.org/ipython-doc/3/config/extensions/autoreload.html

  8. deepnet می گوید

    و اینکه اون عدد ۲ چی هست ؟

    1. سید حسین حسن پور متی کلایی می گوید

      اون ۲ هم یه کد هست که به معنای ریلود خودکار همه ماجول هاست .
      ارگومانهای دیگه اش رو میتونی از اینجا ببینی :
      https://ipython.org/ipython-doc/3/config/extensions/autoreload.html

  9. deeplearning می گوید

    سلام آقای حسن پور ممنون از وب سایت خوبتون
    یه سوال داشتم زمانی که از این سرویس استفاده کردم و گزینه New Python 2 Notebook/New Python 3 Notebook رو انتخاب کردم پیغام زیر رو نمایش داد ؟
    Notebook loading error
    There was an error loading this notebook. Ensure that the file is accessible and try again.
    بعد از کلیک روی لینک زیر وارد گوگل درایو شده و یک نوت بوک ایجاد میشه. هر بار که این کار رو انجام میدم این روال تکرار میشه
    https://drive.google.com/drive/?action=locate&id=125rl3WGIDxQdWRjBO5P-uBRzoGn29wvO&authuser=0

    1. سید حسین حسن پور متی کلایی می گوید

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

    2. حسینجان عباس زاده می گوید

      واسه منم داد فکر کنم چون تحریم هستیم باشه. با فیلتر شکن سایفون رفتم و وارد شدم کار کرد و وارد محیط برنامه نویسیش شد و یه برنامه ساده نوشتم و اجرا گرفتم. شمام امتحان کنید ایشالله جواب میده.
      موفق باشید.

      1. deeplearning می گوید

        خیلی ممنون

  10. جلال می گوید

    با سلام و احترام اگر لازم باشد که دیتاستی حدود ۱ گیگی رو به عنوان داده train معرفی کنیم باید از گوگل درایو استفاده کنیم یا راه های بهتر دیگه هم هست؟

    1. سید حسین حسن پور متی کلایی می گوید

      سلام
      منطقی ترین راه GoogleDrive بنظر میرسه.

  11. زهرا می گوید

    سلام
    ممنون بابت سایت خیلی خوبتون
    میخواسم ببینم چطور میشه برنامه ای که قبلا تو جوپیتر نوشتیم رو تو این محیط لود کنیم و ران کنیم؟و اینکه برنامه من توی چنتا فایل py. جداگانه ست که تو جوپیتر تو یه فولدر قرار میدادم و ران میشد.اینجا به چه صورت هست؟

    1. سید حسین حسن پور متی کلایی می گوید

      سلام هم میتونید از طریق منو اپلود کنید هم میتونید در گوگل درایو خودتون فایلها رو اپلود و بعد با colab اجراشون کنید.

  12. زهرا می گوید

    خیلی ممنون از راهنماییتون
    کد من از چنتا فایل py. جداگانه تشکیل شده فایل اصلی رو فقط ران میکردم. منظورتون این هست که تو colab باید تک تکشونو ران کنم؟

    1. سید حسین حسن پور متی کلایی می گوید

      سلام
      نه وقتی درایو رو معرفی کنید و فایل اصلی رو از درایور لود کنید نباید مشکلی داشته باشید چون مسیر ها نسبی هستن و همه چیز اکی باید باشه

  13. ن ن می گوید

    سلام

    ممنون بابت این پستی که گذاشتین. من میخوام از این colab توی لینوکس استفاده کنم اما برای استفاده از اون بایدفیلترشکن داشته باشم. آیا شما فیلترشکن خوب برای لینوکس سراغ دارین؟

    1. سید حسین حسن پور متی کلایی می گوید

      سلام
      یه VPN تهیه کنید چون گوگل خیلی از فیلترشکن ها رو هم مسدود کرده (بعنوان اسپمر میشناسه)

  14. ن ن می گوید

    خیلی ممنون از پاسختون. من یک vpn خریدم اما متاسفانه خوب نیست. اگه vpn خوب سراغ دارین ممنون میشم راهنمایی کنین

    1. سید حسین حسن پور متی کلایی می گوید

      سلام میتونید از این لینک هم تهیه کنید

  15. rEzA می گوید

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

    1. سید حسین حسن پور متی کلایی می گوید

      سلام.
      خواهش میکنم.
      همچنین انشاءالله شما هم در پناه حق همیشه موفق و سربلند باشید

  16. رسول ایرانپور می گوید

    سلام
    خسته نباشید
    ببخشید برای آپلود کردن داده ها در برنامه چطور باید عمل کرد؟
    من دیتاست رو به صورت دو فایل npy تو درایو و پوشه اصلی مربوط به برنامه آپلود کردم ولی نتونستم به برنامه واردش کنم

    1. سید حسین حسن پور متی کلایی می گوید

      سلام درایو رو بشناسونید نباید مشکلی داشته باشید.
      اگر به مشکل خوردید میتونید یه جا لینک مستقیم کنید بعد از طریق کد دانلودش کنید و کدتون رو ران کنید.

  17. فرزانه می گوید

    با سلام و وقت بخیر
    یه سوال داشتم این سخت افزاری که گوگل در اختیار دانش پژوهان قرار داده تقریبا معادل کدامیک از سخت افزارهای پیشنهادی برای خرید می باشد (۱۰۷۰ یا ۱۰۸۰ یا پایین تر) ؟
    متشکرم

    1. سید حسین حسن پور متی کلایی می گوید

      سلام.کارتی که تعلق میگیره K80 هست که در حالت عادی در حد و اندازه ۱۰۸۰ هست. اما در عمل وقتی شما استفاده میکنید بسته به لود داره و اکثر اوقات خیلی ضعیف تر ظاهر میشه.
      برای مثال نمونه ای که در یک ۱۰۸۰ روی سیستم معمولی طی ۴ ساعت طول میکشه اونجا ممکنه بین ۴ تا ۲۰ ساعت طول بکشه (چند تستی که من دو سه ماه قبل کردم مثلا حدود ۱۶ تا ۱۸ ساعت وقت میگرفت در صورتی که میبایست تنها ۳ تا ۴ ساعت نهایتا وقت میگیرفت)
      اگه خارج از کشور هستید GCP(Google cloud platform) برای دانشجوها ۳۰۰ دلار رایگان سرویس میده. و کارتش هم V100 هست که قویترین کارت انویدیا در این زمینه اس .فقط بعد از ساخت اکانت یک کردیت کارت باید ارائه کنید تا هم مشخصاتتون تایید بشه و هم بنوعی جلوی یوزرهای فیک رو گرفته باشن.
      بعد از اینها بهترین سرویس در حال حاضر توسط paperspace ارائه میشه که البته رایگان نیست ولی خب قیمتاش خیلی مناسبه نسبت به بقیه

  18. نوید می گوید

    سلام آقای حسن پور با تشکر از زحماتتون
    می خواستم بپرسم که چطور میشه دوتا فانکشن رو تو این محیط به هم ربط داد برنامه که من نوشتم به صورت چند تا فانکشن جداگانه هستش حالا برای این که چند تا فانکشن رو به هم ربط بدم باید چیکار کنم
    سوال بعدی اینکه چطور دیتا ها رو تو برنامه بیارم دیتاها رو خودم اپلود کردم ممنون میشم اگه راهنمایی بکنین

    1. سید حسین حسن پور متی کلایی می گوید

      سلام
      متوجه نشدم یعنی چی دوتا فانکشن رو بهم ربط بدید ؟
      برای اپلود و کار با دیتا که بالا توضیحاتش اومده مطالعه نکردین ؟
      میتونید یک کار دیگه هم بکنید یه ریپازیتوری گیت هاب درست کنید همه کدهاتون رو تو اون بزارید بعد اینجا اون رو git clone کنید. اینطور همه فایلهاتون رو در اختیار دارید و هرکاری بخوایید میتونید بکنید .

  19. deeplearning می گوید

    سلام آقای حسن پور ممنون از سایت خوبتون

    یه سوال داشتم این سرویس محدودیت زمانی نداره؟ (مثلا در روز یا در ماه ۲ ساعت بتونی استفاده کنی)

    1. سید حسین حسن پور متی کلایی می گوید

      سلام. فکر میکنم هر ۱۶ ساعت یا هر ۸ ساعت سیستم متوقف میشه در حالت رایگان. یعنی هر بار بهتون اجازه میده تا ۸ یا ۱۶ ساعت (دقیقا خاطرم نیست) کار کنید و بعد کنسل میکنه.

  20. deeplearning می گوید

    ببخشید منظور از حالت Local runtimes در این سرویس چیه ؟ چیزی که فهمیدم میشه با این اجرای طولانی گرفت؟ درسته

    https://research.google.com/colaboratory/local-runtimes.html

    1. سید حسین حسن پور متی کلایی می گوید

      سلام منظورش اینه اگه رو سیستم خونه /کار جوپیتر ران کرده باشید میتونید از گوگل کولب بهش وصل بشید و روی سخت افزار خودتون کد رو اجرا کنید.

      1. zhadi می گوید

        سلام خسته نباشید
        اینکه لوکال ران کنیم با سخت افزار خودمون یعنی دیگه با gpu ران نمیشه؟خب چه فایده داره؟
        من هر نیم ساعت تقریبا باید ری کانکت کنم گوگل کولب رو. نمیدونم برای چیه؟ به خاطر استفاده از فیلترشکن نیست؟چیکار میشه کرد؟

        1. سید حسین حسن پور متی کلایی می گوید

          گوگل کولب ویژگی های مختلفی داره و بسته به نیاز هر شخص یا تیمی یکسری موارد رو تعبیه کردند.
          این هم مربوط به همین سناریوها هست که فرد خودش سخت افزار داره اما میخواد از امکانات گوگل کولب بهره ببره یا بتونه بصورت ترکیبی کارش رو پیش ببره .
          برای استفاده از یه وی پی ان مناسب استفاده کنید.فیلترشکن ها اکثرا محدود میشن توسط سرویس دهندها چون در قالب اسپم در نظر گرفته میشه عموما. محدودیت گوگل کولب ترینینگ ۸ یا ۱۰ ساعته بوده بعید میدونم محدودیت رو کاهش داده باشند.

          1. zhadi می گوید

            خیلی ممنونم
            ببخشید فیلترشکن مناسب چه چیزی هست؟ من الان ultrasurf رو روی کروم دارم و این مشکل رو دارم باهاش. خیلی ممنونم از راهنمایی تون

            1. سید حسین حسن پور متی کلایی می گوید

              سلام
              برای فیلترشکن از وی پی ان استفاده کنید. فیلترشکن های معمولی کار نمیکنن و توسط اکثر سیستم ها بلاک میشن (معمولا بعنوان اسپم میشناسن)
              یه وی پی ان تهیه کنید(بخرید)

  21. محسن می گوید

    سلام،
    بسیار سپاسگزارم بابت وقتی که گذاشتید و این سیستم را معرفی کردید.
    کارتون بسیار عالیه.

  22. learner می گوید

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

    1. سید حسین حسن پور متی کلایی می گوید

      سلام.
      کامنتهای دیگه رو بخونید لطفا.
      امکان این نیست که state چیزی در حالت رایگان حفظ بشه. اگه این قابلیت رو میخوایید باید هزینه پرداخت کنید و از سرویس پولی استفادهکنید
      برای راحتی خودتون میتونید دیتاست رو تو گیت هاب اپلود کنید بعد هر وقت نیاز داشتید خیلی سریع گیت کلون کنید و راحت کارتون رو پیش ببرید دیگه نیازی هم به اپلود توسط خود شما نیست.

      1. learner می گوید

        خیلی ممنون ازینکه وقت میزارید

        1. سید حسین حسن پور متی کلایی می گوید

          خواهش میکنم .
          همینطور میتونید از گوگل درایو استفاده کنید . فایلهاتون رو اونجا اپلود کنید و در گوگل کولب بهش دسترسی داشته باشید (سیو کنید بخونید و..)
          بخش مربوط به کار با گوگل درایو رو با اطلاعات جدید بروز کردم و باید بتونید براحتی استفاده کنید.

  23. حامد می گوید

    سلام
    در برخی از موارد لازمه که path تعریف کنیم. مثلا برای اینکه بخوایم با پکیج selenium مرورگر firefox رو بالا بیاریم باید اول از همه فایل geckodriver رو دانلود کنیم و path مربوط به اونو تووی ویندوزمون بدیمش. این کارو روی سیستم خودم انجام دادم و درست هم کار میکنه ولی روی google colab نتونستم. میشه لطف کنین راهنماییم کنین؟
    چیزی که به ذهن خودم رسیده بود این بود که فایل geckodriver رو آپلود کنم و آدرس آپلودشدشو بدم اما تووی فرایند آپلود گیر میکنه و تموم نمیشه.
    ممنونم

  24. محمدیان می گوید

    سلام روزتون بخیر
    میشه راهنمایی کنید چگونه میتوان کتابخانه fast aiرا نصب کرد. هر دستوری که میزنم با ارور روبرو میشم

    1. سید حسین حسن پور متی کلایی می گوید

      سلام. چه خطایی میگیرید؟

  25. محمدیان می گوید

    سلام برای ارتباط با درایو به شکل گفته شده
    !apt-get install -y -qq software-properties-common python-software-properties module-init-tools
    !add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
    !apt-get update -qq 2>&1 > /dev/null
    !apt-get -y install -qq google-drive-ocamlfuse fuse
    بااین پیام روبرو میشوم
    E: Package ‘python-software-properties’ has no installation candidate
    ممنون میشم راهنمایی بفرمایید

    1. سید حسین حسن پور متی کلایی می گوید

      سلام
      اینجا رو چک کنید

  26. محمدیان می گوید

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

    1. سید حسین حسن پور متی کلایی می گوید

      کجاخطا میده . به چه چیزی؟ لطفا خطا رو کامل قرار بدیدبشه متوجه شد اشکال از کجاست. من اینطور نمیتونم متوجه بشم شما بخشی رواشتباه وارد کردید یا نه گیر کار از جای دیگه اس

  27. ابوالفضل می گوید

    ممنون و مطالب عالی بود
    من رو از دست نصب کتابخانه های یادگیری عمیق نجات دادید

  28. N.K می گوید

    سلام وقت بخیر
    من میخوام در سایت google colab به زبان متلب یا opencv کارکنم میشه درباره کتابخونه های این دو زبان که بتونم دراین سایت استفاده کنم منو راهنمایی کنید؟

    1. سید حسین حسن پور متی کلایی می گوید

      سلام. متلب که پشتیبانی نمیشه. نهایتا بتونید octave نصب کنید (باید ببینید سیستم عامل نصبی مخزنی داره برای نصبش یا نه )
      بعد باید ببینید میتونید بصورت کامند لاینی استفاده کنید یا خیر.
      برای Opencv هم مشکلی نباید داشته باشید. کافیه کتابخونه مورد نظر رو نصب کنید.
      در این پلت فرم هدف استفاده از پایتون و فریم ورکهای مبتنی بر اونه (هرچند میشه چیزهای دیگه هم نصب کرد ولی ایده اصلی اینه و همین کار پیشنهاد میشه)

  29. سید مصطفی می گوید

    سلام وقت بخیر من با این سرویس کار کردم
    شما سرویس ایرانی غیر رایگان که بشه مدل های سنگین تر را ترین کرد (حافظه gpu بیشتری داشته باشه) سراغ دارید؟

    1. سید حسین حسن پور متی کلایی می گوید

      سلام
      هیچ سرویس ایرانی پیدا نمیکنید که قابلیتی نزدیک به این سیستم ها داشته باشه.(چون هزینه تمام شده داخلی بشدت بالا هست)
      اگر هم همین سیستم های ضعیف رو انتخاب کنید هزینه بسیار گزافی رو باید براش پرداخت کنید.در بخش پرسش و پاسخ یکی از عزیزان یکی از این سایتها رو معرفی کردند که هم سخت افزار بسیار ضعیفی داشتند و هم قیمت بشدت گزافی داشتند که ا بدا مقرون به صرفه نیست.
      بهترین گزینه شما سرویس های خارج از کشور مثل vast.ai هست و بعد از اون آمازون و سرویس غیررایگان گوگل. البته چندتا سرویس دهنده دیگه هم هستن منتها از بین تمام اینها vast.ai بهترین قیمت ها رو ارائه میکنه (شخصا کار کردم برای چند ساعت و واقعا خیلی بصرفه تر از مابقی هست)

  30. mahdiGameMaker می گوید

    سلام همینجوری با دستور زیر تست سرعت نت رو بررسی کردم عجب سرعتی داره این سرور ها!
    https://www.speedtest.net/result/8223966241.png

    !speedtest-cli –share
    Retrieving speedtest.net configuration…
    Testing from Google Cloud (35.221.115.47)…
    Retrieving speedtest.net server list…
    Selecting best server based on ping…
    Hosted by Ridge Wireless (Cupertino, CA) [9.79 km]: 106.369 ms
    Testing download speed……………………………………………………………………..
    Download: 172.33 Mbit/s
    Testing upload speed…………………………………………………………………………………………
    Upload: 125.46 Mbit/s
    Share results: http://www.speedtest.net/result/8223966241.png

  31. mahdiGameMaker می گوید

    سلام میشه مثلا من تصویر دوربینم رو استریم روی یک سرور بزارم و colab پردازش کنه ؟

    1. سید حسین حسن پور متی کلایی می گوید

      سلام.
      میتونید ولی محدودیت زمانی دارید و از طرفی گوگل روی IO محدودیت گذاشته. برای استریم کردن هم تست نکردم خودم ببینم محدودیتی از این جهت براش قائل شدن یا نه. میتونید تست کنید و ما رو هم درجریان بزارید.

  32. زهرا می گوید

    با عرض سلام
    از انجا که گوگل کولب محدودیت ۱۲ ساعته دارد چگونه میتوانیم نتایج خود را در گوگل درایو دخیره کنیم که برایمان نتایج باقی بماند؟
    با تشکر فراوان

    1. سید حسین حسن پور متی کلایی می گوید

      سلام.
      در آموزش بالا این مطلب پوشش داده شده.
      بخش ادغام Google Drive رو ببینید

  33. نقوی می گوید

    سلام
    ممنونم از آموزش عالیتون ، این بهترین آموزش توی فضای مجازی هستش.
    من یه سری اشکالات دارم که با خوندن این آموزش برطرف نشد!!!
    نمیتونم دیتاستم رو لود کنم و اینکه نمیتونم ماژول هایی که توی گوگل درایو ذخیره کردم اینجا ایمپورت کنم!!
    لطفا راهنمایی کنین خیلی فوریه
    ممنون

    1. سید حسین حسن پور متی کلایی می گوید

      سلام.من نمیدونم چکار کردید اما در کل درایو رو متصل کنید نباید مشکلی داشته باشید تو لود و… مگر اینکه حجم بالا باشه یا IO زیاد داشته باشید که در ای صورت مشکل پیدا میکنید (بخاطر محدودیت سرویس رایگان)

      1. نقوی می گوید

        من درایو رو به کولب mount کردم، از پنل کنار میتونم به فایل ها دسترسی داشته باشم، اما وقتی میخوام ماژول رو ایمپورت کنم خطا میده، path رو هم APPEND میکنم اما باز خطا داره، میشه لطفا دستوراتی که باید اجرا کنم اینحا برام بنویسین؟
        ممنونم

        1. سید حسین حسن پور متی کلایی می گوید

          چه خطایی؟
          دستورات همه بالا قید شدن .بخش اتصال به گوگل درایو رو لطفا ببینید(بخش ادغام Google Drive رو ببینید) :

  34. مهسا می گوید

    با سلام
    من کتابخانه های مورد نیازم tensorflow ,tensorlayer می باشد با وارد کردن
    Import tensorflow as tf
    Import tensorlayer as tl

    خطای زیر داده می شود

    RuntimeError Traceback (most recent call last)
    in ()
    ۱ import tensorflow as tf
    ----> 2 import tensorlayer as tl

    /usr/local/lib/python3.6/dist-packages/tensorlayer/__init__.py in ()
    ۳۴ LooseVersion(tensorflow.__version__) 36 "TensorLayer does not support Tensorflow version older than 2.0.0.\n"
    ۳۷ "Please update Tensorflow with:\n"
    ۳۸ " -
    pip install --upgrade tensorflow\n"

    RuntimeError: TensorLayer does not support Tensorflow version older than 2.0.0.
    Please update Tensorflow with:
    - pip install --upgrade tensorflow
    - pip install --upgrade tensorflow-gpu

    من دو دستور زیر را میزنم
    ! pip install --upgrade tensorflow
    ! pip install --upgrade tensorflow-gpu

    ولی باز همین خطا داده میشود

    1. سید حسین حسن پور متی کلایی می گوید

      سلام.
      شما یا باید tensorflow رو نصب کنید یا tensorflow-gpu رو نه هر دو رو . ضمنا نسخه دوم هنوز بصورت رسمی منتشر نشده . نسخه آلفا رو میتونید با قید نام نسخه نصب کنید.
      سعی کنید پکیج رو حذف کنید و بعد اگر gpu دارید tensorflow-gpu رو نصب کنید .
      برای نصب نسخه ۲ آلفا از tensorflow-gpu==2.0.0-alpha0 باید استفاده کنید. یعنی بزنید pip install tensorflow-gpu==2.0.0-alpha0

  35. مهسا می گوید

    با تشکر از توضیحاتتون
    من خب میخوام از gpu گوگل گولب استفاده کنم جهت ران کردن کد
    الان طبق صحبتتاتون این روند انجام میدم
    ! pip uninstall tensorflow-gpu
    !pip uninstall tensorflow
    !pip install tensorflow-gpu==2.0.0-alpha0
    که با توجه به توضیحاتتون دیگر با import کردن دو کتابخانه ارری حاصل نمیشود اما
    وقتی از دستور tensorflow مثل زیر استفاده میکنم چنین خطایی میدهد
    t_image = tf.placeholder(‘float32’, [16, 96, 96, 3])
    AttributeError: module ‘tensorflow’ has no attribute ‘placeholder’

    1. سید حسین حسن پور متی کلایی می گوید

      در نسخه ۲ تنسورفلو این یکی از موارد حذف شده است.
      برای اطلاعات بیشتر میتونید اینجا رو مطالعه کنید (نیاز به فیلترشکن دارید)
      اگر اصرار دارید از نسخه ۱ استفاده کنید میتونید بصورت زیر عمل کنید :

      import tensorflow.compat.v1 as tf
      tf.disable_v2_behavior()

  36. مهسا می گوید

    با توجه به توضیحی که بیان کردید من همان نسخه اول را نصب میکنم
    ! pip uninstall tensorflow
    !pip uninstall tensorflow-gpu
    !pip install –upgrade tensorflow
    !pip install –upgrade tensorlayer
    import tensorflow as tf
    import tensorlayer as tl
    TensorLayer does not support Tensorflow version older than 2.0.0.
    Please update Tensorflow with:
    pip install --upgrade tensorflow
    pip install --upgrade tensorflow-gpu
    و مجددا همان ارر داده میشود

    1. سید حسین حسن پور متی کلایی می گوید

      ببینید tensorlayer تنها در نسخه ۲ در دسترس هست و نه نسخه های قبلی. اگر حتما باید ازش استفاده کنید مجبورید سویچ کنید رو تنسورفلو ۲ و کدتون رو هم با توجه به اون تغییر بدید.

  37. مهسا می گوید

    با تشکر از توضیحاتتان موفق به ران کد شدم ولی چون کولب ۱۲ ساعته هست حال یک سیستم با gpuبا ,Geforce GTX 1080 Ti در دسترسم هست
    با ران کردن کد با اینکه بر روی cpu کامپیوتر خودم و کولب به مشکلی بر نخوردم ولی حال این ارر را میدهد
    ResourceExhaustedError: OOM when allocating tensor with shape [16,64,224,224] and type float on/job: localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
    در اینترنت فقط متوجه شدم که batch باید کوچک شود
    اگر لطف بفرمایید راهنمایی بفرمایید که این چه ارری است و باید چکار کنم؟

  38. Masi می گوید

    سلام
    چطور میشه توی کدی که داریم می نویسیم یه کد دیگه یا در واقع یه فانکشن دیگه رو import کرد؟؟؟

    1. سید حسین حسن پور متی کلایی می گوید

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

  39. مهسا می گوید

    سلام
    من Python 3 Notebookانتخاب کردم. پس از moun کردن با دستور
    from google.colab import files
    uploaded = files.upload()
    دو فایل model.py,dataset.py آپلود کردم
    حال برای ران کردن هر کدام از این فایل ها مگر نباید این دستور وارد شود؟؟
    ! model.py
    ! dataset.py
    اما چنین خروجی می‌دهد
    /bin/bash: model.py: command not found
    /bin/bash: dataset.py: command not found
    باید برای ران کردن هر کدام چه دستوری را وارد کنم؟

    1. سید حسین حسن پور متی کلایی می گوید

      سلام
      باید پایتون رو هم لحاظ کنید
      مثلا بنویسید
      !python model.py

  40. مهسا می گوید

    سلام
    خیلی ممنون لطف کردید

  41. lorenzo می گوید

    عالی
    عالی
    آقا ژوپیتر کرنل سی++ هم داره درسته؟!
    من پروژه م با سی پلاسه چیجوریه تعامل کنم دقیقا اصلا سردر نمیارم 🙁

    راستی کاش بجای متن یک ویدئو ضبط میکردید هم راحت تر بود هم اینطور توی آپارات و… خیلی بیشتر ملت استفاده میکردن…
    بازم ممنون بابت اطلاعات عالی

    1. سید حسین حسن پور متی کلایی می گوید

      سلام . رسمی خبری از کرنل سی++ نیست تا جایی که یادم میاد اما xeus-cling رو سرچ کنید کرنل سی++ رو برای ژوپیتر ارائه کرده و از اون میتونید استفاده کنید. یک دموی آنلاین هم داره که اگه دوست داشته باشی اینجا رو ببینید

  42. مینا می گوید

    سلام
    ممنون از آموزش های مفیدتون.
    من می خوام داخل گوگل کولب یک فایل main از یک پروژه رو اجرا کنم که کلاس هایی از فایل های دیگر رو import کرده، حالا موقع اجرا میگه به این پکیج ایمپورت شده دسترسی ندارم، چطوری می تونم مشکل رو رفع کنم؟
    ModuleNotFoundError Traceback (most recent call last)
    in ()
    ۶ import numpy as np
    ۷ ‘mygoogledrive/My Drive/utils.py’
    —-> 8 from utils import *
    ۹ from datetime import datetime
    ۱۰ from gru_theano import GRUTheano

    ModuleNotFoundError: No module named ‘utils’

    —————————————————————————
    NOTE: If your import is failing due to a missing package, you can
    manually install dependencies using either !pip or !apt.

    To view examples of installing some common dependencies, click the
    “Open Examples” button below.

    1. سید حسین حسن پور متی کلایی می گوید

      سلام تو آموزش توضیح داده شده دیگه تو کامنتا هم اشاره شده . شما درایو رو که mount کنید (گوگل درایوتون رو مثلا) بعد فایلهاتون رو میتونید براحتی به شکلی که مدنظرتونه اجرا کنید. بخش ادغام با Google Drive رو بخونید

  43. farnaz می گوید

    سلام وقت بخیر. من ی سوالی داشتم در مورد نسخه پریمینیوم گوگل کلب. من اگه این نسخه رو خریداری کنم اطلاع دارید که به آی پی ایران گیر میده یا نه بعدا؟ منظور این نسخه رو بخرم ولی نتونم استفاده کنم.

    1. سید حسین حسن پور متی کلایی می گوید

      سلام بفهمه از ایرانید بن میشید مگه اینکه از یه vpn پدر مادر دار که لیک نکنه IP شما رو استفاده کنید. وقتی vpn گرفتید برید در این سایت ببینید IP اصلی شما رو نشون میده یا نه : https://browserleaks.com/webrtc
      یا https://hide.me/en/webrtc-leak-test بعد تست کنید. اگر دیدید آی پی اصلی شما رو نشون داد وی پی ان بدرد نمیخوره (البته میتونید WebRTC leak shield رو نصب کنید در کروم یا فایرفاکس و این جلوی لیک آی پی از طریق webrtc رو میگیره منتها اگر وی پی ان شما توسط ایرانی ها زیاد استفاده شده باشه و تو بلک لیست باشه حتی اگر webrtc shield هم نصب باشه باز فرقی نمیکنه و بن میشید)
      یک روش خیلی بهتر اینه که شما یه vps بگیرید (ویندوزی مثلا ۱ ماهه یا دوماهه) بعد ریموت دسکتاپ بزنید به اون و از داخل اون با اکانت گوگل کولب یا هرچیز دیگه ای کار کنید. (مشخصا vps شما در ایران نباید باشه دیگه)

  44. الهه می گوید

    سلام وقت بخیر مهندس
    یه سوال داشتم من برای آموزش مدلم منابع زیادی نیاز دارم .میخواستم ببین ایا سرویس ایرانی هست که بشه برای آموزش مدل روش ژوپیتر نوت بو ران کرد
    مثل سایت ferdowsi.cloud سرویس محاسباتی گرافیکی میده میخوام ببنیم شما نمونه مشابهی میشناسین ؟

    1. سید حسین حسن پور متی کلایی می گوید

      سلام ازمایشگاه دانشگاهای مختلف این منابع رو دارند میتونید از طریق استاد راهنماتون اقدام کنید اگر دانشگاه خودتون امکانات مورد نظر رو نداره از دانشگاه دیگه استفاده کنید.
      بله دانشگاه فردوسی این سرویس رو ارائه میکنه امیرکبیر یا شریف هم اگر اشتباه نکرده باشم سرویس های مشابه ارائه میکنن.
      به غیر از این موارد چندسال پیش چندتا شرکت بودن با چنین سرویسهایی اما هزینه بسیار بالا بود و بعدا هم کنار رفتند.

      لطفا دقت کنید اگر شما گرافیک AMD یا انویدیا دارید پست مرتبط با DirectML رو در سایت ببینید (هم Tensorflow-directml هست و هم Pytorch-directml که بتونید استفاده کنید. ) ممکنه اینها نیاز شما رو برآورده کنه.
      به غیر از کولب، سرویس کگل هم هست که میتونید ازش استفاده کنید.

      1. الهه می گوید

        سلام مهندس حسن پور گرامی .خیلی ممنونم بابت توضیح خوب و کاملتون . متوجه شدم .حتما پست directml بررسی میکنم . درمورد سرویس مشابه کولب از طرف کگل اطلاعی نداشتم خیلی متشکرم راهنمایی کردین. بی نهایت سپاس

  45. نجف دریابندری می گوید

    سلام….
    من می خواستم کد زیر رو توی کولب اجرا کنم، ولی خیلی زمان می بره… بیشتر از یک ساعت گذشت و هیچ نتیجه ای نداد. می خوام بدونم طبیعیه یا من جایی اشتباه کردم؟

    from random import *

    c=1;d=0;e=0;f=0;g=0;a=0;b=0;cc=0

    num=[0.5,1,1.5,2,2.5,3]

    all_oct=[[1,1,1,0.5,1,1,1,0.5]]

    i=0
    while i!=1:
    d=choice(num);e=choice(num);f=choice(num);g=choice(num);a=choice(num);b=choice(num);cc=choice(num)
    octave=[c,d,e,f,g,a,b,cc]
    if not octave in all_oct:
    all_oct.append(octave)
    else:
    continue
    if len(all_oct)==279936:
    i=i+1

    print(all_oct)
    print()
    print()
    print()
    print()
    print()
    print()
    print()
    print()
    print()
    print()
    print()
    print()

    intent_oct=[]

    i=0
    while i!=279936-1:
    if all_oct[i][0]+all_oct[i][1]+all_oct[i][2]+all_oct[i][3]+all_oct[i][4]+all_oct[i][5]+all_oct[i][6]+all_oct[i][7]==7:
    intent_oct.append(all_oct[i])
    i=i+1
    else:
    i=i+1
    continue

    print(intent_oct)

    #ending
    hi=input()
    while hi!=’end’:
    hi=input()
    if hi==’end’:
    print(“good luck!!!”)

    1. سید حسین حسن پور متی کلایی می گوید

      سلام.
      کولب بعضی اوقات بازی در میاره خصوصا اگر با فایل کار داشته باشید یا پردازش سنگین باشه نه یکساعت که کاری نکنه. معمولا ریست کنید رانتایم رو باید بتونید بدون مشکل پیش برید.
      کدی اگر میزارید بدرستی فرمتش کنید که بشه براحتی اونو خوند و بررسی کرد

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.