العمليات الأساسية مع Tensors في PyTorch

Al Mlyat Alasasyt M Tensors Fy Pytorch



تعد Tensors حجر الزاوية في PyTorch الذي يوفر بنية بيانات قوية ومرنة للحسابات الرقمية في التعلم العميق. مثل مصفوفات NumPy، فهي تمثل مصفوفات متعددة الأبعاد ولكن مع ميزات وتحسينات إضافية مصممة خصيصًا لمهام التعلم العميق. نظرًا لأن الموترات هي الكائنات الأساسية لتخزين البيانات الرقمية ومعالجتها في PyTorch، فيمكن أن يكون لها أبعاد مختلفة، تتراوح من الكميات (الممتدات ذات البعد الصفري) إلى المتجهات (الممتدات ذات البعد الواحد)، والمصفوفات (الممتدات ثنائية الأبعاد)، والأعلى -التوترات الأبعاد.

واحدة من أكبر مزايا الموترات هي قدرتها على إجراء عمليات رياضية فعالة. تدعم Tensors مجموعة واسعة من العمليات الحسابية بما في ذلك العمليات المتعلقة بالعناصر مثل الجمع والطرح والضرب والقسمة وعمليات المصفوفة مثل ضرب المصفوفات وتبديلها.

يوفر PyTorch مجموعة شاملة من الوظائف والأساليب لمعالجة الموترات. وتشمل هذه عمليات إعادة تشكيل الموترات، واستخراج عناصر محددة أو موترات فرعية، وتسلسل أو تقسيم الموترات على طول أبعاد محددة. بالإضافة إلى ذلك، يوفر PyTorch وظائف لفهرسة وتشريح وبث الموترات مما يسهل العمل مع الموترات ذات الأشكال والأحجام المختلفة.







في هذه المقالة، سوف نتعلم العمليات الأساسية مع الموترات في PyTorch، ونستكشف كيفية إنشاء الموترات، وتنفيذ العمليات الأساسية، ومعالجة شكلها، ونقلها بين وحدة المعالجة المركزية ووحدة معالجة الرسومات.



إنشاء Tensors

يمكن إنشاء Tensors في PyTorch بعدة طرق. دعونا نستكشف بعض الطرق الشائعة.



لإنشاء موتر، يمكننا استخدام فئة 'torch.Tensor' أو وظيفة 'torch.tensor'. دعونا نلقي نظرة على بعض الأمثلة:





يستورد شعلة

# إنشاء 1 - موتر الأبعاد من قائمة بايثون
Tensor_1d = شعلة. الموتر ( [ 1 , 2 , 3 , 4 , 5 ] )
مطبعة ( Tensor_1d )

# إنشاء 2 - موتر الأبعاد من قائمة بايثون المتداخلة
tensor_2d = شعلة. الموتر ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
مطبعة ( tensor_2d )

# إنشاء موتر للأصفار بشكل محدد
Zeros_tensor = شعلة. أصفار ( 3 , 2 )
مطبعة ( Zeros_tensor )

# إنشاء موتر من شكل معين
ones_tensor = شعلة. تلك ( 2 , 3 )
مطبعة ( ones_tensor )

# إنشاء موتر بقيم عشوائية من توزيع موحد
Random_tensor = شعلة. راند ( 2 , 2 )
مطبعة ( Random_tensor )

في الأمثلة المذكورة، قمنا بإنشاء موترات بأشكال مختلفة وتهيئتها بقيم مختلفة مثل أرقام محددة، أو أصفار، أو آحاد، أو قيم عشوائية. من المفترض أن تشاهد مخرجات مماثلة عند تشغيل مقتطف الشفرة السابق:



عمليات الموتر

بمجرد أن يكون لدينا الموترات، يمكننا إجراء عمليات مختلفة عليها مثل العمليات الحسابية على العناصر، وعمليات المصفوفة، والمزيد.

العمليات الحسابية الحكيمة للعناصر

تسمح لنا العمليات الحسابية المتعلقة بالعناصر بإجراء العمليات الحسابية بين الموترات على أساس كل عنصر على حدة. يجب أن يكون للموترات المشاركة في العملية نفس الشكل.

وهنا بعض الأمثلة:

يستورد شعلة

# إنشاء الموترات
الموتر1 = شعلة. الموتر ( [ 1 , 2 , 3 ] )
الموتر2 = شعلة. الموتر ( [ 4 , 5 , 6 ] )

# إضافة
إضافة = الموتر1 + الموتر2
مطبعة ( 'إضافة:' , إضافة )

# الطرح
الطرح = الموتر1 - الموتر2
مطبعة ( 'الطرح:' , الطرح )

# عمليه الضرب
عمليه الضرب = الموتر1 * الموتر2
مطبعة ( 'عمليه الضرب:' , عمليه الضرب )

# قسم
قسم = الموتر1 / الموتر2
مطبعة ( 'قسم:' , قسم )

في الكود المحدد، نقوم بإجراء عمليات الجمع والطرح والضرب والقسمة بين موترين مما يؤدي إلى موتر جديد بالقيم المحسوبة. تظهر نتيجة مقتطف الكود كما يلي:

عمليات المصفوفة

يوفر PyTorch عمليات مصفوفة فعالة للموترات مثل ضرب المصفوفة وتبديلها. هذه العمليات مفيدة بشكل خاص لمهام مثل الجبر الخطي وحسابات الشبكة العصبية.

يستورد شعلة

# إنشاء الموترات
الموتر1 = شعلة. الموتر ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
الموتر2 = شعلة. الموتر ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# ضرب المصفوفات
Matrix_product = شعلة. حصيرة ( الموتر1 , الموتر2 )
مطبعة ( 'منتج المصفوفة:' , Matrix_product )

# تبديل المصفوفة
Matrix_transpose = الموتر1. ت
مطبعة ( 'تبديل المصفوفة:' , Matrix_transpose )

في المثال الموضح، نقوم بإجراء عملية ضرب المصفوفة باستخدام الدالة 'torch.matmul' ونحصل على تبديل المصفوفة باستخدام السمة '.T'.

التلاعب في شكل الموتر

بالإضافة إلى إجراء العمليات على الموترات، غالبًا ما نحتاج إلى معالجة شكلها لتناسب متطلبات محددة. يوفر PyTorch عدة وظائف لإعادة تشكيل الموترات. دعنا نستكشف بعض هذه الوظائف:

يستورد شعلة

# إنشاء موتر
الموتر = شعلة. الموتر ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# إعادة تشكيل الموتر
reshaped_tensor = الموتر. إعادة تشكيل ( 3 , 2 )
مطبعة ( 'إعادة تشكيل الموتر:' , reshaped_tensor )

# احصل على حجم الموتر
مقاس = الموتر. مقاس ( )
مطبعة ( 'حجم الموتر:' , مقاس )

# احصل على عدد العناصر في موتر
num_elements = الموتر. إعطاء اسم ( )
مطبعة ( 'عدد العناصر:' , num_elements )

في الكود المقدم، نقوم بإعادة تشكيل الموتر باستخدام وظيفة إعادة التشكيل، واسترجاع حجم الموتر باستخدام طريقة الحجم، والحصول على العدد الإجمالي للعناصر في الموتر باستخدام طريقة الأعداد.

نقل الموترات بين وحدة المعالجة المركزية ووحدة معالجة الرسومات

يوفر PyTorch دعمًا لتسريع GPU مما يسمح لنا بإجراء العمليات الحسابية على بطاقات الرسومات والتي يمكنها تسريع مهام التعلم العميق بشكل كبير عن طريق تقليل أوقات التدريب. يمكننا نقل الموترات بين وحدة المعالجة المركزية ووحدة معالجة الرسومات باستخدام طريقة 'إلى'.

ملحوظة : لا يمكن القيام بذلك إلا إذا كان لديك وحدة معالجة الرسومات NVIDIA مع CUDA على جهازك.

يستورد شعلة

# إنشاء موتر على وحدة المعالجة المركزية
Tensor_cpu = شعلة. الموتر ( [ 1 , 2 , 3 ] )

# يفحص لو GPU متاح
لو شعلة. مختلف . متاح ( ) :
# انقل الموتر إلى وحدة معالجة الرسومات
Tensor_gpu = Tensor_cpu. ل ( 'مختلف' )
مطبعة ( 'الموتر على GPU:' , Tensor_gpu )
آخر :
مطبعة ( 'وحدة معالجة الرسومات غير متوفرة.' )

في الكود المقدم، نتحقق مما إذا كانت وحدة معالجة الرسومات متاحة باستخدام torch.cuda.is_available(). إذا كانت وحدة معالجة الرسومات متاحة، فإننا ننقل الموتر من وحدة المعالجة المركزية إلى وحدة معالجة الرسومات باستخدام الطريقة 'to' مع الوسيطة 'cuda'.

خاتمة

يعد فهم عمليات الموتر الأساسية أمرًا بالغ الأهمية للعمل مع PyTorch وبناء نماذج التعلم العميق. في هذه المقالة، اكتشفنا كيفية إنشاء الموترات، وتنفيذ العمليات الأساسية، والتعامل مع شكلها، ونقلها بين وحدة المعالجة المركزية ووحدة معالجة الرسومات. مسلحًا بهذه المعرفة، يمكنك الآن البدء في العمل مع الموترات في PyTorch، وإجراء العمليات الحسابية، وبناء نماذج متطورة للتعلم العميق. تعمل Tensors كأساس لتمثيل البيانات ومعالجتها في PyTorch والتي تمكنك من إطلاق العنان للقوة الكاملة لإطار التعلم الآلي متعدد الاستخدامات هذا.