در این بخش با زیربنای تمام محاسبات علم داده آشنا خواهید شد. تنسور (Tensor) یک موجودیت پیچیده ریاضی است که کار با داده های چند بعدی را ممکن میسازد. هدف این مقاله اینست که درک جامعی از تنسورها و کاربردهای آن را به خواننده ارائه کند. به عنوان یک محقق، درک کامل تنسورها به شما اجازه میدهد که بتوانید با داده های پیچیده و مدل های کامپیوتری پیشرفته کار کنید.
# تنسور چیست؟
در ریاضیات، تنسور آبجکتی است که ماتریس ها و بردارها را به ابعاد بالاتر گسترش میدهد. حوزه های کامپیوتر، مهندسی و فیزیک به شدت به تنسورها وابسته هستند، به ویژه وقتی صحبت از یادگیری ماشین و یادگیری عمیق میشود. به بیان ساده، تانسور آرایه ای از اعداد است که میتواند هر بعدی داشته باشد. رتبه (rank) تانسور تعداد ابعاد آن است.
رابطه tensor با دیگر آبجکت ها به شکل زیر است:
- هر اسکالر(scalar) یک عدد است که به آن تنسور با رتبه 0 گفته میشود. هر اسکالر را میتوانید به شکل
s
نمایش دهید.
- هر بردار(vector) یک آرایه یک بعدی از اعداد است که به آن تنسور با رتبه 1 گفته میشود. هر بردار را میتوانید به شکل
v_i
نمایش دهید کهi
ایندکس بردار است.
- هر ماتریس(matric) یک آرایه دوبعدی از اعداد است که به آن تنسور با رتبه 2 گفته میشود. هر ماتریس را میتوانید به شکل
M_{ij}
نمایش دهید کهi
وj
ایندکس های آن هستند.
- هر تنسور(tensor) یک آرایه با ابعاد سه یا بالاتر است. میتوانید تنسور را به شکل
T_{ijk…}
نمایش دهید کهi j k ...
ایندکس های آن هستند.
# ویژگی های تنسور
تنسورها دارای چندین ویژگی مهم هستند که آنها را به ابزاری همه کاره و قدرتمند در زمینه های مختلف تبدیل می کند:
ابعاد (Dimension): تعداد ایندکس هایی که برای توصیف تنسور مورد نیاز است.
رتبه (Rank): تعداد ابعادی که تنسور دارد.
شکل (Shape): سایز هر بعد از تنسور را مشخص میکند. مثلا تنسوری با شکل (3, 4, 5)
ابعادی با اندازه 3 و 4 و 5 دارد.
نوع (Type): نوع داده ای که در تنسور ذخیره شده است. تنسورها میتوانند داده های مختلفی مانند عدد صحیح یا اعشاری داخل خود ذخیره کنند.
# تنسور در ریاضیات
تنسورها در ریاضیات مفاهیمی مانند اسکالر، بردار و ماتریس را به ابعاد بالاتر گسترش میدهند و انجام عملیات های پیچیده را ممکن میسازند. تنسور ها در زمینه های مختلفی مانند جبرخطی و دیفرانسیل مورد استفاده قرار میگیرند.
ماتریس M را در نظر بگیرید که دو بعد دارد:
1 2
M = 3 4
داده های چند بعدی مانند یک تصویر رنگی که از سه رنگ RGB تشکیل شده است، میتواند توسط یک تنسور رتبه 3 نمایش داده شود.
# تنسور در علوم کامپیوتر
تانسورها برای سازماندهی و تجزیه و تحلیل داده های چند بعدی در علوم کامپیوتر و یادگیری ماشین، به ویژه در فریمورک های یادگیری عمیق مانند PyTorch و TensorFlow بسیار مهم هستند. تنسورها داده های خامی که وارد شبکه های عصبی میشوند را در خود ذخیره میکنند. به عنوان مثال دسته ای از تصاویر را میتوان با یک تنسور به شکل (batch size, height, width, channels)
نمایش داد. همچنین میتوان برای ذخیره گسترده weight و bias از تنسورها استفاده کرد.
یک شبکه عصبی ساده با یک لایه ورودی، یک لایه پنهان و یک لایه خروجی را در نظر بگیرید. داده ها و پارامترهای هر لایه را میتوان به صورت تانسور نمایش داد:
import torch
# Input data: batch of 2 images, each 3x3 pixels with 3 color channels (RGB)
input_data = torch.tensor([[[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
[[9, 8, 7], [6, 5, 4], [3, 2, 1]],
[[0, 0, 0], [1, 1, 1], [2, 2, 2]]],
[[[2, 3, 4], [5, 6, 7], [8, 9, 0]],
[[0, 9, 8], [7, 6, 5], [4, 3, 2]],
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]])
# Weights for a layer: assuming a simple fully connected layer
weights = torch.rand((3, 3, 3, 3)) # Random weights for demonstration
# Output after applying weights (simplified)
output_data = torch.matmul(input_data, weights)
print(output_data.shape)
# Output: torch.Size([2, 3, 3, 3])
در اینجا، input_data یک تانسور رتبه 4 است که دسته ای از دو تصویر RGB 3×3 را نشان می دهد. وزن ها نیز به صورت یک تانسور نشان داده می شوند و داده های خروجی پس از اعمال وزن ها در تانسور دیگری ذخیره میشوند.
ارسال نظر