کتابخانه TensorFlow در پایتون – به زبان ساده + مثال و نحوه نصب
TensorFlow یکی از قدرتمندترین کتابخانهها در حوزههای «یادگیری عمیق» (Deep Learning) و «یادگیری ماشین» (Machine Learning) است. این کتابخانه به یکی از استانداردهای صنعتی تبدیل شده است. توسعه دهندگان کتابخانه TensorFlow در پایتون، این ابزار را به صورت رایگان و اوپن سورس با هدف ساخت مدلهای یادگیری ماشین توسعه دادهاند. این ابزار یکی از جذابترین پلتفرمها برای برنامه نویسان حوزه هوش مصنوعی است. در نتیجه هر کسی که بخواهد در زمینه هوش مصنوعی فعالیت کند، باید مهارت کار با کتابخانه TensorFlow را هم داشته باشد.
- در این مطلب با کتابخانه TensorFlow آشنا شده و هدف از طراحی آن را متوجه میشوید.
- یاد میگیرید که چطور کتابخانه TensorFlow در پایتون را نصب کنید.
- باچند مورد از مفاهیم مهم کتابخانه TensorFlow آشنا شده و هر کدام را به شکل دقیق درک میکنید.
- میتوانید تفاوت بین انواع ساختار ذخیرهسازی داده بر اساس بعد را تشخیص بدهید.
- با گرافهای تنسورفلو، مزایای استفاده و روش تعریف آنها آشنا میشوید.
- متوجه میشوید که کتابخانه TensorFlow چطور کار میکند.


در این مطلب از مجله فرادرس، روش استفاده از کتابخانه TensorFlow در پایتون را بررسی میکنیم. برای انجام این کار از مثالهای کدنویسی شده متنوعی کمک میگیریم. با یاد گرفتن کار با TensorFlow در پایتون علاوه بر تقویت مهارتهای مربوط به یادگیری ماشین در حوزه تحلیل داده هم میتوانید با قدرت، وارد شوید.
کتابخانه TensorFlow در پایتون چیست؟
TensorFlow پلتفرم اوپن سورسی است که با هدف ساخت مدلهای یادگیری ماشین طراحی شده. با کمک این کتابخانه میتوان از مراحل اولیه تا انتهایی مدلهای هوش مصنوعی را با تمرکز بر روی «شبکههای عصبی» (Neural Networks) طراحی کرد. «یادگیری عمیق» (Deep Learning) یکی از شاخههای یادگیری ماشین است. در این روش، حجم انبوهی از دادههای بدون ساختار را بررسی و تحلیل میکنیم. یادگیری عمیق با یادگیری ماشین معمولی فرق دارد. زیرا در این تکنیک میتوانیم بر روی دادههای نامرتب و بدون ساختار هم کار بکنیم.
تنسورفلو از کتابخانهها و ابزارهای زیاد و متنوعی ساخته شده است. این پلتفرم، جامعه کاربری فعال و بزرگی نیز دارد. توسعهدهندگان با کمک این کتابخانه میتوانند اپلیکیشنهای یادگیری ماشین پیشرفتهای بسازند. یکی از برجستهترین ویژگیهای TensorFlow مربوط به قابلیت استفاده از آن در زبان پایتون است. پایتون، رابط کاربری سادهای (API) برای توسعهدهندگان هوش مصنوعی ارائه داده است. به این صورت که بدنه تمام برنامهها با زبان پایتون نوشته میشود اما در پسزمینه با زبان «++C» بهینهسازی شده و با عملکرد بالا اجرا میشوند.
| موضوع | توضیح ساده |
|---|---|
| TensorFlow | پلتفرم اوپنسورس برای ساخت مدلهای یادگیری ماشین و یادگیری عمیق |
| هدف اصلی | تمرکز بر شبکههای عصبی |
| روش کار | کار با دادههای زیاد و بدون ساختار |
| زبان برنامهنویسی | کدنویسی با پایتون |
| عملکرد داخلی | اجرای سریع با بهینهسازی ++C |
| جامعه کاربری | بزرگ و فعال |
| کاربرد | ساخت اپلیکیشنهای پیشرفته هوش مصنوعی |
کتابخانه یادگیری عمیق TensorFlow در پایتون اولین بار و با هدف استفاده داخلی توسط تیم «گوگل برین» (Google Brain) توسعه داده شد. از آن به بعد کاربرد این پلتفرم اوپن سورس در حوزه «تحقیق و توسعه» (R&D) و سیستمهای تولید محصول افزایش پیدا کرد.
تا به اینجای مطلب با کتاخانه TensorFlow و کاربرد آن در پایتون آشنا شدید. در ادامه ابتدا روش نصب این کتابخانه را توضیح میدهیم و سپس با جزئیات بیشتری مفاهیم مهم آن را بررسی میکنیم. در صورت تمایل به مطالعه مطالبی مانند این مورد، پیشنهاد میکنیم که حتما اپلیکیشن رایگان مجله فرادرس را در گوشی تلفن خود نصب کنید.
برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.
چطور کتابخانه TensorFlow در پایتون را نصب کنیم؟
برای نصب تنسورفلو در پایتون مراحل زیر را یک به یک پشت سر هم طی کنید.
- گام اول، نصب پایتون: ابتدا باید از نصب بودن پایتون بر روی کامپیوتر مطمئن شویم. برای بررسی این مسئله میتوانیم خط فرمان ویندوز یا ترمینال لینوکس را باز کنیم. سپس باید دستور python --version را بنویسیم و دکمه «Enter» را فشار بدهیم. اگر پایتون را از قبل بر روی سیستم نصب نکرده باشیم، لازم است ابتدا نسخه جدید آن را از وبسایت رسمی پایتون در لینک (+) دانلود کرده و بر روی کامپیوتر نصب بکنیم. نصب پایتون بر روی VSCode عملیات سادهای است.

- گام دوم، نصب تنسورفلو: به منظور کار در حوزه یادگیری ماشین و هوش مصنوعی به کتابخانه TensorFlow نیاز داریم. برای نصب این کتابخانه میتوانیم از ابزار pip در پایتون استفاده کنیم. این ابزار به صورت خودکار و همراه با پایتون بر روی کامپیوتر نصب میشود. ابتدا خط فرمان یا ترمینال خود را باز کنید. سپس دستور زیر را در آن نوشته و دکمه Enter را فشار بدهید.
pip install tensorflow
اگر کارت گرافیک قدرتمندی بر روی کامپیوتر نصب کردهاید، میتوانید مقداری از بار محاسباتی سنگین TensorFlow را برعهده آن بگذارید. برای انجام این کار باید تنسورفلو مربوط به آن کارت گرافیکی را بر روی کامپیوتر خود نصب بکنید.
pip install tensorflow-gpu
- گام سوم، بررسی نصب: به محض پایان نصب TensorFlow میتوانید عملکرد آن را بررسی کنید. این کار به توسعه دهندگان کمک میکند که از نصب صحیح کتابخانه تنسورفلو مطمئن شوند. به این منظور، لازم است که ابتدا مفسر پایتون را باز کنیم.
- برای دسترسی به مفسر پایتون فقط کافی است کلمه python را در محیط خط فرمان یا ترمینال سیستم عامل خود نوشته و دکمه Enter را فشار بدهیم. سپس وارد محیط پایتون میشویم.
- در محیط باز شده دستور زیر را بنویسید.
import tensorflow as tf
print(tf.__version__)
بعد از اجرای کدهای بالا باید نسخه TensorFlow نصب شده بر روی کامپیوتر در کنسول پایتون نشان داده شود. در صورت اعلام موفقیت آمیز نسخه TensorFlow، میتوانیم به مرحله بعد رفته و پروژههای یادگیری ماشین خود را اجرا کنیم.
چطور با کمک فرادرس کار با TensorFlow را یاد بگیریم؟
فرادرس برای کمک به یادگیری TensorFlow از نکات ابتدایی تا پیشرفته، فیلمهای آموزشی متنوعی را تولید و منتشر کرده است. این کتابخانه کاربرد بسیار گستردهای در حوزه شبکههای عصبی و یادگیری عمیق دارد. بنابراین نکات فنی و ریزهکاریهای خاصی را هم شامل میشود. متخصصان هوش مصنوعی برای طراحی و توسعه مدلهای خود از TensorFlow کمک میگیرند. در واقع بدون استفاده از این کتابخانه بیشتر مدلهای هوش مصنوعی حاضر در جهان وجود نداشتند. با یادگیری روش استفاده از این ابزار میتوانیم موقعیتهای شغلی بسیار خوبی برای خود به وجود بیاوریم.

وبسایت آموزشی فرادرس به عنوان بزرگترین تولید کننده محتوای آموزشی آنلاین در کشور تمرکز ویژهای بر روی تکنولوژیهای جدید و کاربردی دارد. هوش مصنوعی و شبکههای عصبی یکی از این حوزههای مدرن هستند. بنابراین فیلمهای آموزشی زیادی درباره آنها در فرادرس تولید شده است. از آنجا که TensorFlow یکی از کاربردیترین ابزارهای این حوزه است، فرادرس هم تمرکز خواصی بر روی آن میگذارد. در پایین چند مورد از فیلمهای مربوط به آموزش و استفاده از TensorFlow معرفی شدهاند.
برای مشاهده فیلمهای بیشتر میتوانید بر روی تصویر بالا کلیک کنید.
- فیلم آموزش یادگیری عمیق، درباره شبکه های GAN با پایتون
- فیلم آموزش یادگیری عمیق در پایتون با «تنسورفلو و کراس» (TensorFlow و Keras) + گواهینامه
- فیلم آموزش برنامه نویسی یادگیری عمیق با کتابخانه TensorFlow 2
- فیلم آموزش مکان یابی اشیا با «تنسورفلو» (TensorFlow)
- فیلم آموزش پیاده سازی شبکه عصبی کانولوشنی CNN با TensorFlow + گواهینامه
در ادامه چند مورد از مفاهیم مهم و کاربردی در TensorFlow را معرفی کردهایم.
چند مفهوم مهم درباره TensorFlow
تا به اینجای مطلب، شناخت اولیه خوبی نسبت به تنسورفلو پیدا کردیم. از این قسمت به بعد جزئیات بیشتری از این کتابخانه قدرتمند را بررسی خواهیم کرد. ابتدا با چند مورد از اصول کلیدی TensorFlow آشنا میشویم. یکی از این موارد تنسورها هستند. تنسورها عناصر پایه و بسیار مهمی از TensorFlow و بخشی از نام این کتابخانه را تشکیل میدهند.
نکته: به منظور کمک به درک بهتر روش کار TensorFlow از نسخه ۱ این کتابخانه استفاده میکنیم. کدهای نوشته شده با نسخه ۲ کوتاهتر و شفافتر هستند اما ممکن است که با کمک آن به خوبی متوجه رفتار انجام شده در پشت پرده نشوید. با استفاده از روش بالا برای نصب TensorFlow نسخه ۲ این کتابخانه نصب میشود. برای استفاده از نسخه ۱ دستورهای زیر را به ابتدای تمام کدها اضافه میکنیم.
در خط اول از کدهای بالا ابتدا کتابخانه tensorflow را با نام مستعار tf وارد میکنیم. سپس (در خط دوم) با دستور disable_eager_execution() حالت اجرای پیشفرض TensorFlow 2 را غیرفعال میکنیم. با انجام این کار TensorFlow مثل نسخه ۱ کار میکند. بنابراین میتوانیم از «Session» و «Placeholder» نیز استفاده کنیم.
تنسور
تنسور به نوعی از آرایهها گفته میشود. این آرایه با هدف نمایش داده در کتابخانههای یادگیری عمیق مانند TensorFlow در پایتون استفاده میشود. تنسورها میتوانند ابعاد بسیار زیادی داشته باشند. این نوع ساختمان داده مانند «وکتور» (Vector) فقط به یکبعد یا مانند ماتریس به دوبعد محدود نمیشود. مقادیر ذخیره شده در تنسور شامل نوع یکسان و ساختار ثابتی هستند. شکل تنسور، تعداد و اندازه ابعاد آن را نشان میدهد.

به طور معمول، ساختارهای ذخیرهسازی داده را بر اساس تعداد بعد نامگذاری میکنند.
- به تنسورهای یکبعدی، بردار یا «وکتور» (Vector) گفته میشود.
- به تنسورهای دوبعدی، «ماتریس» (Matrix) گفته میشود.
- به تنسورهای صفربعدی یا بدون بعد، «اسکالر» (Scalar) گفته میشود.
| تعداد بُعد تنسور | نام تنسور | توضیح ساده |
|---|---|---|
| ۰ | اسکالر (Scalar) | یک عدد تنها |
| ۱ | بردار یا «وکتور» (Vector) | یک لیست از عددها |
| ۲ | ماتریس (Matrix) | جدول عددها |
شکل
مفهوم شکل در کتابخانه TensorFlow با ابعاد و اندازه تنسور مطابقت دارد. به عبارت سادهتر، تعداد عنصر در هر بعد، شکل تنسور را مشخص میکند. در طول فرایند ساخت گراف، تنسورفلو به صورت خودکار شکلها را تشخیص میدهد. رتبه شکلهای تشخیص داده شده ممکن است معلوم یا نامعلوم باشد. حتی اگر رتبه اشکال مورد نظر معلوم باشد، اندازه ابعاد آنها نیز میتواند معلوم یا نامعلوم باشد. در تصویر پایین، انواع تنسور را رسم کردهایم.

نوع
منظور از «نوع» (Type) همان نوع دادههایی است که میتوانند در مقادیر تنسور ذخیره شوند. به طور کلی تمام مقادیر ذخیره شده در تنسور باید از نوع یکسانی باشند. در فهرست پایین، مشهورترین دادههای قابل قبول به عنوان عناصر تنسور را نام بردهایم.
- «اعداد صحیح» یا نوع داده Integer
- اعداد اعشاری یا نوع داده Float - با ممیز شناور
- «اعداد صحیح بدون علامت» (Unsigned Integers)
- مقادیر «بولین» (Boolean)
- نوع داده رشته
- «اعداد صحیح کوانتیزه شده» (Quantized Integer)
- اعداد مختلط

گراف
گراف به ساختارهای دادهای گفته میشود که شامل مجموعهای از اشیا «tf.Operation» و «tf.Tensor» هستند.
- اشیا tf.Operation: مراحل محاسباتی را توصیف میکنند.
- اشیا tf.Tensor: هم دادههایی را نشان میدهند که بین عملیات مختلف جابهجا میشوند.
گرافها در داخل فضای «tf.Graph» تعریف میشوند. از آنجا که گراف ساختاری برای ذخیره و نمایش دادههاست بدون نیاز به استفاده از کدهای زبان پایتون هم میتوان آنها را ذخیره، اجرا و بارگذاری کرد.
فرض کنید که میخواهیم در «TensorBoard» به گرافها نگاه بکنیم. در این فضا و به ازای شبکه عصبی دولایه، گرافهای TensorFlow در پایتون به شکل زیر نمایش داده میشوند.

مزایای استفاده از گراف
گرافها کاربردهای بسیار گسترده و متنوعی دارند. از گرافهای تنسورفلو میتوان در حوزههایی استفاده کرد که حتی مفسر پایتون هم ندارند. برای مثال میتوان به اپلیکیشنهای موبایل، دستگاههای امبد شده یا سرورهای بک اند اشاره کرد. در ضمن گرافها را به راحتی میتوان بهینهسازی کرد. با این کار به کامپایلر اجازه میدهیم که کارهایی مانند موارد زیر را انجام بدهد.
- برای پیدا کردن مقادیر تنسور، گرههای ثابت را در محاسبات ترکیب کند. به این کار «Constant Folding» گفته میشود.
- در هر عملیات محاسباتی، بخشهای مستقل از هم را جدا کرده و بر روی نخها یا دستگاههای مختلف اجرا بکند.
- برای سادهتر کردن اجرای عملیات ریاضی، «زیرعبارتهای» تکراری را حذف بکند.
سشن یا نشست
«سشن» (Session) در TensorFlow وظیفه اجرای عملیات مختلف را بر روی گراف برعهده دارد. از سشن برای ارزیابی عملکرد گرهها در گراف استفاده میشود. برای مثال، دو فرایند تعریف گراف و اجرای محاسبات با کمک سشن را در ادامه بررسی میکنیم.
تعریف گراف
گراف تعریف شده در کدهای پایین، شامل یک متغیر و سه عملیات مختلف است. این گراف را میتوان به شکل زیر تعریف کرد:
- عملیات متغیر، مقدار فعلی متغیر را برمیگرداند.
- عملیات مقداردهی اولیه، در ابتدای اجرای برنامه، مقدار 42 را به متغیر اختصاص میدهد.
- عملیات تخصیص هم مقدار متغیر را برابر با 13 میکند.
رفتار کدهای بالا را در فهرست پایین توضیح دادهایم:
- ابتدا tensorflow نسخه سازگار با 1.x را به محیط کدنویسی وارد میکنیم.
- سپس رفتار نسخه ۲ را غیرفعال میکنیم.
- بعد از آن و در خط چهار، گراف جدیدی میسازیم تا عملیاتها داخل آن تعریف شوند.
- در خط ۶، درون گراف، متغیری با مقدار اولیه 42 تعریف میکنیم.
- در خط بعد، عملیاتی برای مقداردهی اولیه همه متغیرها میسازیم.
- همچنین دستوری از جنس assign تعریف میکنیم تا مقدار متغیر به 13 تغییر کند.
- از خط ۱۰ به بعد Session روی همین گراف اجرا میکنیم.
- ابتدا متغیرها مقداردهی اولیه شده و آن مقدار چاپ میشود.
- در خط ۱۳، دستور assign اجرا شده و مقدار جدید متغیر نمایش داده میشود.
نکته: TensorFlow میتواند گرافی را به عنوان پیشفرض تولید بکند. بنابراین نوشتن دو خط ابتدایی کد بالا اختیاری است. وقتی هیچ گرافی تعریف نشود، سشنهای نوشته شده در بخش بعدی از گراف پیشفرض استفاده میکنند.

این نکته، درباره «TensorFlow 1.x» درست است. در نسخه جدید TensorFlow یعنی ورژن ۲ این مفهوم وجود ندارد. بنابراین به تعریف Session و گراف به شکل صریح نیاز نداریم. در این نسخه متغیرها به شکل مستقیم ساخته و استفاده میشوند. به منظور کمک به درک بهتر مفاهیم در این مطلب، روش اجرای برنامهها را با تنسورفلو نسخه ۱ بررسی میکنیم.
استفاده از سشن برای اجرای محاسبات
برای اجرای هر کدام از سه نوع عملیات توصیف شده بر روی گرافها ابتدا باید سشن بسازیم. خود سشن، مقداری از حافظه را به ذخیرهسازی مقادیر فعلی متغیرها اختصاص میدهد.
بعد از اجرای کدهای بالا خروجی به صورت عدد 42 نمایش داده میشود. در ادامه مراحل اجرای این کدها را یک به یک توضیح دادهایم.
- خطوط ۱ و ۲: ابتدا tensorflow را وارد میکنیم و اجرای eager را غیرفعال میکنیم تا مانند نسخه ۱ رفتار کند.
- خطوط ۴ تا ۶: گراف جدیدی میسازیم و درون آن متغیری با مقدار اولیه 0 تعریف میکنیم.
- خط ۷: سپس عملیات assign را میسازیم. با کمک این دستور، مقدار 42 را به متغیر اختصاص میدهیم.
- خط ۸: بعد از آن نیز همه متغیرها را مقداردهی اولیه میکنیم.
- خط ۱۰: روی همان گراف Session اجرا میکنیم.
- خطوط ۱۱ و ۱۲ و ۱۳: ابتدا متغیرها مقداردهی اولیه میشوند. سپس عملیات assign اجرا شده و در نهایت مقدار متغیر چاپ میشود.
همینطور که در برنامه بالا مشاهده کردید، مقدار متغیر فقط برای استفاده در یک سشن معتبر است. اگر بخواهیم که دوباره از این مقدار در سشن دیگری استفاده کنیم، از طرف کتابخانه TensorFlow در پایتون با پیغام خطا روبهرو میشویم. دلیل خطا آن است که متغیر مورد نظر در این سشن مقداردهی نشده است.
با اجرای کدهای بالا ابتدا خروجی Session 1: 10 چاپ شده و بعد از آن پیغام خطا نمایش داده میشود.
البته میتوان از گرافها در سشنهای مختلفی استفاده کرد. تنها کاری که باید انجام دهیم، مقداردهی دوباره متغیرها است. مقادیر موجود در سشن جدید به طور کامل با مقادیر تخصیص داده شده به متغیرها در سشن قبلی تفاوت دارند.
عملگرها
عملگرهای تنسورفلو همان عملیات ریاضی از پیشتعریف شده هستند. تنسورفلو تمام عملیات پایه ریاضی را پوشش میدهد. در ادامه فهرستی از پرکاربردترین عملیات ریاضی نوشته شده است.
- tf.add(a, b)
- tf.substract(a, b)
- tf.multiply(a, b)
- tf.div(a, b)
- tf.pow(a, b)
- tf.exp(a)
- tf.sqrt(a)
برای تبدیل شدن به برنامه نویس حرفهای پایتون لازم است با انواع عملگرهای ریاضی در پایتون آشنا باشید. به این منظور پیشنهاد میکنیم که مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.
نکته: در کدهای بالا tf عبارتی است که به طور معمول و با هدف مختصرنویسی کلمه tensorflow به عنوان نام مستعار به این کتابخانه اختصاص داده میشود.

عملیات رادیکال
در این قسمت با یکی از مفاهیم ساده و ابتدایی شروع میکنیم. فرض کنید که باید رادیکال مقداری را محاسبه کنیم. برای انجام این عملیات از tensorflow استفاده خواهیم کرد. این فرایند ساده است، زیرا تنسور را میتوان فقط با یک آرگومان ساخت. با کمک تابع tf.sqrt(x) و با فرض این که x عددی از نوع Float است، رادیکال x را محاسبه میکنیم.
بعد از نوشتن و اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Tensor("Sqrt_1:0", shape=(1,), dtype=float32)لازم به اشاره است که خروجی کدهای بالا بهجای رادیکال عدد 2 به صورت شیء تنسور برگردانده شده است. در این مثال، بهجای چاپ نتیجه واقعی عملیات، تعریف تنسور را در خروجی چاپ میکنیم.
عملیات جمع
در این مثال میخواهیم تنسورهای دوبعدی را با یکدیگر جمع بکنیم. ابتدا با کمک کتابخانه tensorflow در پایتون دو تنسور تعریف میکنیم. سپس با کمک تابع tf.add() آنها را با هم جمع میبندیم.
بعد از نوشتن و اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Tensor("Add_1:0", shape=(1, 2), dtype=int32)روند اجرای کدهای بالا را در فهرست پایین، توضیح دادهایم.
- ابتدا کتابخانه tensorflow را با نام tf وارد میکنیم.
- دو تنسور ثابت به نامهای tensor_a و tensor_b با مقادیر عددی صحیح میسازیم.
- با دستور tf.add این دو تنسور را با هم جمع میکنیم و نتیجه را در tensor_add قرار میدهیم.
- در پایان، مقدار تنسور جواب، در خروجی چاپ میشود.
کتابخانه TensorFlow چطور کار میکند؟
TensorFlow به کاربران کمک میکند که گرافهایی از جریان دادهها ایجاد بکنند. این گرافها روش حرکت داده بر روی گرههای مختلف را نشان میدهند. هر گرهای نمایانگر یکی از عملیات ریاضی است. هر لبه یا اتصال بین گرهها هم نماینده یکی از تنسورهاست. تنسور آرایهای چندبعدی از دادهها است. در صورت نیاز به کمک برای درک بهتر مفهوم TensorFlow میتوانید فیلم آموزش رایگان کتابخانه TensorFlow پایتون، آشنایی با ساخت مدلهای یادگیری عمیق با پروژه را در فرادرس مشاهده کنید. لینک دسترسی به این فیلم را در پایین نیز قرار دادهایم.
توسعهدهندگان پایتون با کمک تنسورفلو به تمام این امکانات دسترسی دارند. یادگیری و کار با زبان برنامه نویسی پایتون ساده است. در نتیجه تعریف روش اتصال عناصر سطح بالا به هم نیز در این زبان به سادهگی انجام میشود. در پایتون تمام گرهها و تنسورهای TensorFlow، به صورت شیء تعریف میشوند. بنابراین اپیلیکیشنهای ساخته شده با TensorFlow در اصل برنامههای پایتونی هستند.
از طرف دیگر خود پایتون هم عملیات ریاضی واقعی انجام نمیدهد. تمام کتابخانههای ریاضی مورد استفاده توسط TensorFlow به زبان ++C نوشته شدهاند. این زبان، سرعت خیلی بالاتری نسبت به پایتون دارد. کتابخانههای توسعه داده شده با ++C میتوانند عملیات سنگین ریاضی را به راحتی انجام بدهند. مدیریت این فرایند تنها کاریست که پایتون انجام میدهد. اجزای مختلف را به همدیگر مرتبط کرده و روش ساده و سطح بالایی را برای استفاده از آنها در اختیار برنامه نویسان قرار میدهد.
اپلیکیشنهای تنسورفلویی که با زبان برنامه نویسی پایتون توسعه داده شدهاند را میتوان به راحتی بر روی پلتفرمهای مختلف اجرا کرد. زیرا این اپلیکیشنها از CPU-ها و GPU-های گوناگون پشتیبانی میکنند. به عنوان مثال میتوانیم از موارد نوشته شده در فهرست زیر نام ببریم.
- کامپیوترهای محلی
- خوشههای کامپیوتری در فضای ابری
- سیستمعاملهای مختلفی مانند اندروید و «iOS»
- و غیره

اگر از فضای ابری گوگل استفاده کنیم، میتوانیم سرعت اجرای برنامهها را باز هم بیشتر بکنیم. برای انجام این کار، اپلیکیشنهای TensorFlow را بر روی سختافزارهای TPU اجرا میکنیم. مدلهای ساخته شده با TensorFlow تقریبا بر روی هر نوع دستگاهی قابل نصب هستند. بنابراین به راحتی میتوان از آنها برای ارائه پیشبینی استفاده کرد.
TensorFlow نسخه ۲ در اکتبر سال ۲۰۱۹ میلادی به دنیا معرفی شد. فریمورک TensorFlow در این نسخه با توجه به بازخوردهای گرفته شده از کاربران از بسیاری جهات ارتقا پیدا کرده است. استفاده از این نسخه نسبت به نسخههای قدیمی بسیار سادهتر شده است. برای مثال از رابط بین اپلیکیشنی (API) سادهای برای ارتباط با Keras و آموزش مدلهای هوش مصنوعی استفاده میشود. با کمک این API جدید، پیادهسازی «آموزش توزیع شده» (Distributed Training) سادهتر شده است. پشتیبانی از «TensorFlow Lite» به مدلها کمک میکند که بر روی سیستمهای متنوعتری اجرا شوند.
| محل اجرا | نوع سختافزار | توضیح ساده |
|---|---|---|
| کامپیوتر محلی | CPU / GPU | اجرای مدل روی سیستم شخصی |
| فضای ابری | CPU / GPU | اجرای مدل روی سرورهای ابری |
| گوگل کلود | TPU | اجرای سریعتر مدلها |
| موبایل | CPU | اجرا روی اندروید و iOS |
برای استفاده کامل از ویژگیهای جدیدی «TensorFlow 2.0» لازم است کدهای نوشته شده با TensorFlow قدیمی را بازنویسی بکنیم. در بعضی موارد فقط کافی است که تغییرات کوچکی در کدها بدهیم. در سایر موارد به تغییرات خیلی بزرگتر و اساسی نیاز داریم.

اپلیکیشنهای تنسورفلویی که با پایتون نوشته شدهاند را میتوانیم بر روی سیستمها و دستگاههای مختلف اجرا بکنیم.
گراف محاسباتی کتابخانه TensorFlow در پایتون
گراف محاسباتی در TensorFlow به شبکهای از گرههای متصل به هم گفته میشود. در این شبکه هر گره، مسئول انجام یکی از عملیات ساده ریاضی است. برای مثال میتواند عمل جمع، ضرب یا مقایسه را اجرا کند. برنامهنویسان با زبان پایتون کدهای TensorFlow را مینویسند. این کدها برای ساخت گراف محاسباتی استفاده میشوند. پس از ساخته شدن گراف، برای اجرای آن باید Session اجرا شود.
تمام متغیرهایی که تعریف میکنیم، به گرههایی در گراف تبدیل میشوند. عملیاتهای ریاضی مانند جمع و ضرب داخل همین گرهها انجام میشوند. در این بخش از مطلب، مثال سادهای را درباره روش انجام محاسبات گراف بررسی میکنیم. فرض کنیم باید عملیات ریاضی زیر را با کمک گراف انجام بدهیم.
در گراف زیر هر سه متغیر x و y و z را به وسیله سه گره مجزا نمایش دادهایم.

- مرحله اول: در این مرحله باید متغیرها را تعریف بکنیم. در این مثال، متغیرها به صورت زیر تعریف میشوند.
- x = 1
- y = 2
- z = 3
- مرحله دوم: x و y را با همدیگر جمع میکنیم.
- مرحله سوم: اکنون z را در حاصل جمع x و y ضرب میکنیم.
- در نتهایت نتیجه برابر با 9 شده و به خارج از برنامه ارسال میشود.
مشاهده میکنید که در این برنامه علاوه بر گرهها باید متغیرها را هم تعریف کنیم. اما این گراف دو گره دیگر نیز دارد. یکی از گرهها برای نشان دادن عملیات جمع است و گره بعدی برای نمایش عملیات ضرب به کار برده میشود. در نتیجه این گراف به طور کلی از ۵ گره تشکیل شده است.
عناصر برنامه نویسی ابتدایی TensorFlow
کتابخانه TensorFlow در پایتون به برنامه نویسان کمک میکند تا مقادیر را به سه نوع عنصر دادههای مختلف تخصیص بدهند.
- «ثابتها» (Constants)
- «متغیرها» (Variables)
- Placeholder-ها
در این بخش از مطلب، نگاه دقیقتری به هر کدام از این عناصر ذخیره داده خواهیم داشت.
ثابتها
به پارامترهایی که مقدار آنها تغییرناپذیر است، ثابت گفته میشود. در tensorflow برای تعریف ثابت از تابع tf.constant() استفاده میکنیم. مقدار داده شده به متغیر ثابت را نمیتوان در طول اجرای محاسبات تغییر داد.
در کادر پایین، نمونهای از تعریف ثابت و نمایش آن را به کمک tensorflow بررسی کردهایم.
بعد از اجرای کدهای بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
tf.Tensor(2.0, shape=(), dtype=float32) tf.Tensor(3.0, shape=(), dtype=float32)متغیرهای کتابخانه TensorFlow در پایتون
با کمک متغیرها میتوانیم پارامترهای جدیدی به گراف اضافه کنیم. برای تعریف متغیرهای tensorflow از تابع مخصوص آن استفاده میکنیم. قبل از اجرای گراف در سشن باید تمام متغیرهای آن را مقداردهی اولیه بکنیم.

در کادر زیر، نمونهای از تعریف و مقداردهی اولیه متغیرها را پیادهسازی کردهایم.
بعد از اجرای کدهای بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
Tensor("add_2:0", dtype=float32)
Placeholder-ها در کتابخانه TensorFlow در پایتون
با استفاده از Placeholder-ها میتوانیم از خارج از فضای مدل هم به آن داده اضافه کنیم. Placeholder مانند جعبهای خالی است که برنامه نویس میتواند بعدا مقداری را در داخل آن قرار بدهد. در tensorflow برای تعریف Placeholder از تابع tf.placeholder() استفاده میکنیم.
بعد از اجرای کدهای بالا، عدد 6 به عنوان خروجی در کنسول برنامه چاپ میشود. مراحل اجرای کدهای بالا را در فهرست پایین توضیح دادهایم.
- خطوط ۱ و ۲: ابتدا کتابخانه tensorflow را وارد میکنیم و حالت eager_execution را غیرفعال میکنیم تا رفتار «TensorFlow 1» شبیهسازی شود.
- خط ۴: سپس placeholder به نام c و با نوع عدد اعشاری میسازیم.
- در خط ۵: عملیات سادهای تعریف میکنیم که مقدار c را در عدد 2 ضرب کند و نتیجه را در d قرار بدهد.
- خط ۷: بعد Session ایجاد میکنیم تا محاسبات اجرا شوند.
- خط ۸ و ۹: با استفاده از feed_dict مقدار 3 را به c میدهیم و نتیجه محاسبه شده را اجرا و چاپ میکنیم.
مثالی از پیادهسازی سشن در TensorFlow
گرافها برای اجرا شدن به سشن نیاز دارند. هر وقت که سشن را راه بیاندازیم، گراف اجرا میشود. بخشی از tensorflow که مسئول انجام محاسبات واقعی است، از سشنها برای اجرا و بررسی وضعیت گرههای موجود در گراف استفاده میکند. برای راهاندازی سشن از دستور sess = tf.Session() استفاده میکنیم. این دستور، سشنی را تولید کرده و به tensorflow برای اجرای گراف کمک میکند.
در مثال بالا سه گره x و y و z وجود دارند. ابتدا عملیات ریاضی بر روی گره z انجام شده و نتیجه در این متغیر ذخیره میشود. هر وقت که سشنی را شروع کرده و گره z را اجرا کنیم، ابتدا باید گرههای x و y اجرا بشوند. بعد از آن میتوانیم عملیات جمع را انجام داده و نتیجه را در گره z ذخیره کنیم. نتیجه نهایی در این عملیات برابر با 7.0 است.
هوش مصنوعی را به شکل کامل از ابتدا یاد بگیریم
برای یادگیری هوش مصنوعی میتوانیم از فیلمهای آموزشی فرادرس استفاده کنیم. در این وبسایت آموزشی، فیلمها و مطالب بسیار خوبی درباره هوش مصنوعی تولید و منتشر شدهاند. این فیلمها علاوه بر آموزش تکنیکهای ساخت مدلهای هوش مصنوعی، روش استفاده از ابزارهای هوش مصنوعی را پوشش میدهند. در صورت تمایل به یادگیری روش ساخت این مدلها میتوانید از مجموعه آموزش هوش مصنوعی استفاده کنید. چند نمونه از فیلمهای مربوط به آموزش هوش مصنوعی را در پایین معرفی کردهایم.
- فیلم آموزش رایگان هوش مصنوعی را از کجا شروع کنیم؟ همراه با بررسی نقشه راه یادگیری هوش مصنوعی
- فیلم آموزش هوش مصنوعی، دوره مقدماتی + گواهینامه
- فیلم آموزش رایگان شغل متخصص هوش مصنوعی، همراه با بررسی وظایف، فرصت ها و بازار کار
- فیلم آموزش مبانی یادگیری عمیق یا Deep Learning + گواهینامه
- فیلم آموزش رایگان کاربرد هوش مصنوعی در بازار کار آینده، بررسی چالش ها و فرصت ها
برای مشاهده فیلمهای بیشتر از این مجموعه، بر روی تصویر پایین کلیک کنید.

در بخش بعد روش ساخت پایپلاین در TensorFlow آموزش داده شده است.
چطور در TensorFlow پایپ لاین درست کنیم؟
برای ساخت پایپلاینهای TensorFlow باید مراحل زیر را قدمبهقدم پشت سر بگذاریم.
مرحله اول: ساخت داده
برای شروع از کتابخانه NumPy استفاده میکنیم. با کمک این کتابخانه میتوانیم دو عدد تصادفی بسازیم.
مرحله دوم: ساخت Placeholder
در این مرحله میخواهیم Placeholder با نام x بسازیم. باید شکل این تنسور را به صورت شفاف تعریف کنیم. در این سناریو از آرایهای استفاده میکنیم که فقط شامل دو عنصر ورودی است. شکل کلی این آرایه را میتوانیم به صورت shape=[1,2] بنویسیم.
مرحله سوم: تعریف متد dataset
در مرحله بعد باید دیتاست بسازیم. هدف از این کار آن است که بتوانیم مقدار placeholder x را در آن بدهیم. برای این هدف، میتوانیم از متد زیر استفاده کنیم.
مرحله چهارم: ساخت پایپلاین
در مرحله چهار میخواهیم پایپلاین خود را راهاندازی بکنیم. از این پایپلاین برای جابهجایی داده استفاده خواهیم کرد. در این مرحله دو کار مهم انجام میدهیم:
- برای ساخت پیمایشگر، از تابع make_initializable_iterator() استفاده میکنیم.
- بعد از آن هم تابع get_next() را به کار میبریم.
پیمایشگر ساخته شده الان میتواند دسته بعدی دادهها یا همان «بچ» (Batch) را از دیتاست بگیرد و به بیرون برگرداند. این مرحله با کمک تابع get_next() انجام میشود. البته در این مورد فقط یک دسته یا بچ داده داریم. این بچ هم از دو مقدار تشکیل شده است.
مرحله پنجم: اجرای عملیات
در فهرست پایین تمام کارهای مرحله آخر را قدم به قدم نوشتهایم.
- در این مرحله اول سشن را راهاندازی میکنیم.
- بعد از آن با کمک کد iterator.initializer از عملیات «پیمایشگر» (Iterator) استفاده میکنیم.
- در این قسمت باید مقدار درست شده توسط NumPy را به دیکشنری feed_dict بدهیم.
- این دو مقدار برای پرکردن placeholder با نام x استفاده میشوند.
- در انتها هم نتیجه با کمک متغیر get_next چاپ خواهد شد.
جمعبندی
کتابخانه TensorFlow در پایتون یکی از ابزارهای بسیار مهم در حوزه هوش مصنوعی است. اگر کسی بخواهد در زمینه هوش مصنوعی یا یادگیری ماشین مشغول به کار شود، باید روش استفاده از آن را بلد باشد. تکنولوژیهای یادگیری ماشین و هوش مصنوعی تاثیر بسیار زیادی در پیشرفت انسانها دارند. چیزهایی که قبلا در داستانهای علمی تخیلی میخواندیم اکنون به واقعیت تبدیل شدهاند. یادگیری ماشین بر روی بخشهای مختلف زندگی انسان اثر گذاشته است. کتابخانه TensorFlow ابزار متن بازی است که بسیاری از این نوآوریهای جالب را به وجود آورده.
در این مطلب از مجله فرادرس با TensorFlow در پایتون آشنا میشویم. تبدیل شدن به متخصص در حوزه یادگیری ماشین بسیار سخت است. اما گوگل با ساختن TensorFlow این کار را سادهتر کرده است. با کمک کتابخانه TensorFlow جمعآوری داده، ساختن مدلهای هوش مصنوعی و انجام پیشبینی بر اساس اطلاعات فعلی سادهتر شده است.












