سلام :) امیدوارم تا این قسمت خسته نشده باشین، در ادامه مطالب قسمت اول و دوم ، در قسمت سوم به معرفی توابع و کلاس ها و دو کتابخانه پایتون معروف مورد استفاده در یادگیری عمیق می پردازیم.
برای تعریف تابع از کلمه کلیدی def استفاده می کنیم، کلمه کلیدی def قبل از اسم تابعمون قرار می گیره، آرگومان ورودی رو داخل پرانتز تعریف می کنیم
نکته جالب توجه در پایتون اینه وقتی که تابع تعریف می کنید شبیه زبان برنامه نوسی C++ از {} استفاده نمی کنید و از tab استفاده می کنید.
هنگام استفاده تنها کافی است نام تابع را بنویسید و آرگومان های تابع رو داخل پرانتز بنویسید.
جالبه بدونید که می تونید تابع رو پرینت کنید که در چنین شرایطی پایتون آدرس تابع رو برای شما پرینت میکنه.
برای پاس کردن یک آرگومان به تابع درنظر داشته باشید، مقادیر آرگومان یک تابع می تونن مقادیر پیش فرض داشته باشن و بدون تعیین مقادیر آرگومان ازش استفاده کنید. اگه آرگومان رو تعیین نکنید از مقادیر پیش فرض استفاده میشه و در غیر این صورت می تونید مقادیر رو خودتون هم تعریف کنید.
این چند تا نکته رو در نظر داشته باشید:
1 - می تونستیم آرگومان hi رو نذاریم و یک اشتباه رخ میداد پس چه کار کنیم؟ می تونیم اسم آرگومان ها رو بنویسیم و به راحتی و بدون مشکل ارسال کنیم ، حتی می تونیم ترتیب رو جا به جا کنیم و خیالمون از این بابت راحته.
2 - فرض کنید یکی از آرگومان ها مقدار پیش فرض داره و آرگومان دیگه مقدار پیش فرض نداره! در نظربگیرید جای دو تا آرگومان رو عوض می کنید، اینجا در واقع پایتون یک خطا به ما برمیگردونه از نوع Syntax error !
شما در پایتون هم می تونید از شی گرایی بهره ببرید، برای هر کلاس می تونیم یک سری تابع، متغیر و ... تعریف کنید.
مثلا اینجا کلاس Greeter تعریف شده و تابع hello_bye هم براش تعریف شده.
توابع داخل کلاس به دو دسته تقسیم میشن:
1 - توابع instance : که از طریق object ها فراخوانی میشن. یک پارامتر self هم همون اول دارن.
2 - توابع سطح کلاس : با استفاده از اسم کلاس میشه این توابع رو فراخوانی کرد.
نمونه ها رو در کد بالا می بینید. می بینید که نمی تونیم greeter.hello_bye رو نمی تونیم چون تابع instance هست فراخوانی کنیم و خطا دریافت می کنیم.
برای یک کلاس در پایتون یک سی توابع پیش فرض آماده داریم که با __ شروع و با __ هم به پایان میرسن که اینها توابع پیش فرض پایتون برای کلاس ها هستن . به اینها میگن داندرها و یکی از پر استفاده ترینهاش init هست که وقتی یک آبجکت از کلاس ساخته میشه فراخوانی میشه. مثلا در کد زیر یک آرگومان Name هم ارسال شده که در تابع init استفاده شده ، پس تا الان متوجه شدید آرگومان های کلاس رو از طریق تابع init می تونیم مشخص کنیم.
این قسمت دو کتابخانه معروف Numpy و Matplotlib رو معرفی میکنم.
1 - NumPy:
هدف این کتابخانه اینه که تمام قابلیت هایی که در متلب برای محاسبات برداری و ماتریس داریم رو برای ما فراهم کنه و حسابی به ما در محاسبات جبرخطی کمک میکنه.
برای نصبش می تونید از دستور زیر استفاده کنید.
با دستور زیر هم می تونید داخل کد خودتون import اش کنید. چرا حالا از as np نوشتیم؟ معمولا به خاطر طولانی بودن اسم کتابخانه ها از این دستور استفاده میکنن تا اسامی کتابخونه ها خلاصه تر بشه . معمولا NumPyرا با استفاده از np می نویسن.
معروف ترین ساختار داده NumPy array ها هستند که تا حدی شبیه لیست هستند ولی تفاوت هایی دادرند. مثلا همه اعضا نوعشون مثل هم هست و نمی تونن شبیه لیست متغیرهایی از نوع متفاوت باشند.
برای تعریف NumPy array می تونیم یک لیست رو به NumPy array پاس بدیم ، تابع لیست رو دریافت میکنه و در خروجی یک NumPy array برگردونه میشه!
شبیه تابع Len هم shape در NumPy array هست که یه مقدار Tuple به ما برمیگردونه که با استفاده از اندیس می تونیم بهش دسترسی داشته باشیم. از طریق اندیس ها می تونیم مقدار NumPy array رو تغیییر بدیم. تابع ndim هم تعداد ابعاد آرایه رو برمیگردونه.
نحوه دسترسی در یک لیست تو در تو و تفاوت اون رو با NumPy array در کد زیر مشاهده می کنید:
کتابخانه پر استفاده ای در پایتون برای رسم نمودارها هست. حسابی در یادگیری عمیق ازش استفاده می کنید!
دستور زیر هم برای این هست که در نوتبوک مورد استفاده هر چیزی که بخواهیم plot کنیم داخل همون صفحه plot کنه و پنجره جدیدی باز نشه!
اینجا متغیر x رو با Np.arrange تعریف می کنیم که کاربردی شبیه range در لیست داره. میگه از 0 تا 3p با فاصله یک دهم یک Numpy array بساز و Y هم مقدار SinX میشه و بعد این نمودار رو رسم می کنیم.
امیدوارم مطالعه این منبع براتون مفید بوده باشه، اگه قصد داشتید از اول این مقاله رو مطالعه کنید قسمت اول رو از طریق این لینک و قسمت دوم رو از طریق این لینک می تونید مطالعه کنی