درجه، بعد و شکل تانسورها در TensorFlow

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

برنامه‌های تنسورفلو از داده ساختارهای مبتنی بر تانسور برای نمایش و بازنمایی داده‌ها استفاده می‌کنند. همان‌طور که پیش‌تر هم گفتیم شما می‌توانید برای تجسم بهتر تانسورها از آرایه‌ها و یا لیست‌های چندبعدی (n-بعدی) استفاده کنید. یک تانسور نوعی ایستا (static) و ابعادی پویا دارد. فقط تانسورها می‌توانند به‌صورت رأس‌های گراف محاسباتی مورد پردازش قرار گیرند.

درجه

در تنسورفلو، تانسورها به صورت واحدهایی از ابعاد توصیف می‌شوند که به آن درجه (Rank) می‌گویند. درجه تانسور شبیه درجه ماتریس نیست. درجه تانسور بیانگر تعداد ابعاد یک تانسور است. برای مثال تانسور روبرو (که به‌صورت یک لیست پایتونی تعریف‌شده است) دارای درجه ۲ است:

t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

تانسور درجه ۲ در حقیقت همان چیزی است که ما عمدتاً با نام ماتریس و تانسور درجه ۱ را با نام بردار (Vector) می‌شناسیم. در تانسور درجه ۲ برای دسترسی به هر المان (درایه) از دستورهای به شکلt[i,j] استفاده می‌شود. برای تانسور درجه ۳ مستلزم آن هستیم که از یک آدرس‌دهی به شکل t[i, j, k]  استفاده کنیم.

درجه موجودیت ریاضیاتی نمونه کد پایتون
۰ مقدار اسکالر s = 483
۱ بردار v = [1.1, ۲٫۲, ۳٫۳]
۲ ماتریس m = [[1, ۲, ۳], [۴, ۵, ۶], [۷, ۸, ۹]]
۳ تانسور درجه ۳ t = [[[2], [۴], [۶]], [[۸], [۱۰], [۱۲]],[[۱۴], [۱۶], [۱۸]]]
n تانسور درجه n ….

شکل

مستندات تنسورفلو از سه اصطلاح برای توصیف ابعاد تانسورها استفاده می‌کند: درجه، شکل و شماره بعد. جدول زیر نحوه‌ی ارتباط مفاهیم این اصطلاح‌ها را با یکدیگر نشان می‌دهد.

درجه شکل شماره بعد مثال
۰ [] ۰-D یک تانسور ۰-D (0-بعدی) یک عدد است. (اسکالر)
۱ [D0] ۱-D یک تانسور ۱-D (1-بعدی) به شکل [۵]
۲ [D0, D1] ۲-D یک تانسور ۲-D به شکل [۳,۴]
۳ [D0, D1, D2] ۳-D یک تانسور ۳-D به شکل [۱,۴,۵]
n [D0, D1, … Dn-1] n-D یک تانسور به شکل [D0, D1, … Dn-1].

شکل تانسورها را می‌توان به صورت لیست پایتون یا تاپل‌هایی (tuple) از اعداد و یا نوع داده tf.TensorShape نشان داد.

نوع داده

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

نوع داده نوع پایتون شرح
DT_FLOAT tf.float32 ممیز شناور ۳۲ بیتی
DT_DOUBLE tf.float64 ممیز شناور ۶۴ بیتی
DT_INT8 tf.int8 عدد صحیح علامت دار ۸ بیتی
DT_INT16 tf.int16 عدد صحیح علامت‌دار ۱۶ بیتی
DT_INT32 tf.int32 عدد صحیح علامت‌دار ۳۲ بیتی
DT_INT64 tf.int64 عدد صحیح علامت‌دار ۶۴ بیتی
DT_UINT8 tf.uint8 عدد صحیح بدون علامت ۸ بیتی
DT_UINT16 tf.uint16 عدد صحیح بدون علامت ۱۶ بیتی
DT_STRING tf.string آرایه با طول متغیر. هر عنصر از یک تانسور آرایه‌ای از بایت‌ها است.
DT_BOOL tf.bool بولی.
DT_COMPLEX64 tf.complex64 اعداد مختلط ساخته‌شده از دو ۳۲ بیت نقاط شناور: قسمت حقیقی و موهومی.
DT_COMPLEX128 tf.complex128 اعداد مختلط ساخته‌شده از دو ۶۴ بیت نقاط شناور: قسمت حقیقی و موهومی.
DT_QINT8 tf.qint8  ۸ بیت عدد صحیح علامت‌دار که در عملیات کوانتیده استفاده می‌شود.
DT_QINT32 tf.qint32 ۳۲ بیت عدد صحیح علامت‌دار که در عملیات کوانتیده استفاده می‌شود.
DT_QUINT8 tf.quint8  ۸ بیت عدد صحیح بدون علامت که در عملیات کوانتیده استفاده می‌شود.

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