في كثير من الاحيان عند استخدام الشبكات العصبية ك CNN وغيرها من الشبكات يكون المخرج من طبقة قد لا يلائم المدخلات المطلوبة من طبقة اخرى. بالتالي الحل هو اعادة تشكيل المصفوفة وجعلها تلائم الطبقة المطلوبة. في Pytorch هناك طريقتين لاعادة تشكيل شكل المصفوفة وهيا باستخدام view or reshape.
view يرجع لنا ال tensor مع الشكل الجديد. وبالنسبة ل reshpae يرجع لنا نسخة من tensor لكن بشكل عام كلهم يادون نفس المهمة وهيا اعادة تشكيل شكل المصفوفة. ملاحظة: احنا مجرد نغير الشكل ولكن ما نلمس البيانات نفسها.
ممكن يجي في بالك سؤال مهم وهو كيف أعرف انه المصفوفة مثلا ٢ على ٢ اقدر اغير شكلها؟ وما هو المفروض يكون الشكل الجديد؟
هذا اذا كنت حاولت قبل تطبق deep learning model فعلى الاغلب قد واجهتك هذه المشكلة. الموضوع بسيط جدا وحشرحه بعد ما نشوف المصفوفة التالية:
نفس الامثلة السابقة. نشوف الكود لانشاء هذا tensor.
انشائنا المصفوفة في السطر الاول وبعدين طبعنا حجم المصفوفة وايضا المصفوفة نفسها.
في التطبيقات العملية احنا حنعيد تشكيل شكل المصفوفة حسب المدخلات المطلوبة من الطبقة layer الي حنرسل لها البيانات. السؤال الان المصفوفة التي انشانها فوق، ما الاشكال التي ممكن اعيد تشكيل المصفوفة فيها؟ وكم شكل؟
الموضوع بسيط أول شي نبغى نشيك كم عدد العناصر في tensor عن طريق الكود التالي:
نلاحظ طبع لنا عدد العناصر الموجودة في tensor. بالتالي احنا نعرف انه ممكن نعيد تشكيل المصفوفة على شكل (1,4) لان واحد ضرب الاربعة يعطينا ١. ومثلا لو فرضنا مصفوفة عندي عددها ١٢. نقدر نقول انه نشكلها على شكل (4,3) او (6,2) او (12,1)وهكذا. تعال نشوف الكود كيف ننفذ هذا التشكيل.
نلاحظ في المرة الاولى استخدمنا reshape وفي المرة الثانية استخدمنا view وكلهم اعطونا نفس النتيجة بدون اي اخطا لان اخترنا الشكل الصحيح حسب المصفوفة التي عندنا.
شاهد الفديو للاستزادة و معرفة الاخطاء الشائعة.
لمتابعة الفديو الخاص بالمقالة، الرجاء الضغط
هنا
ان اصبت فمن الله وان اخطات فمن نفسي ..
لا تنسى مشاركة المقالة اذا أعجبتك ..
اخوكم رائد الحربي
ولاي ملاحضات او استفسارات يرجى مراسلتي على تويتر @raedalharbi14 أو كتابة التعليق هنا