في كثير من الاحيان عند استخدام الشبكات العصبية ك CNN وغيرها من الشبكات يكون المخرج من طبقة قد لا يلائم المدخلات المطلوبة من طبقة اخرى. لكن هالمرة باستخدام اعادة التشكيل مثل ما رأينا في المقالة السابقة ممكن ما يكون الحل. لماذا؟ تخيل عندك tensor او مصفوفة حجمها 2D مثلا وخلينا نقول (2,3) تمام؟ الان تخيل الطبقة layer التي حنرسل لها البيانات كان متطلبها لقبول البيانات وحتى ما يظهر لنا اي خطا ان تكون البيانات 3D. ما الحل؟ الحل باستخدام unsqueeze ومعناه انه نضيف dimnsion جديد. افرض عندنا المصفوفة التالية
الان تعال نشوف الكود لها:
طبعنا المصفوفة وحجمها وعناصرها. الان افرض بيانتنا في الطبقة الاولى first layer وحتى تنتقل الى الطبقة الثانية لازم تكون البيانات حجمها 3D. احنا هنا لازم نضيف dimension جديد باستخدام unsqueeze مثل ما ذكرت. نشوف الكود
نلاحظ انه اضفنا dimension جديد. لكن مهم نحدد هذا البعد نبغى نضيفه على مستوى الصفوف او او الاعمدة او ايش بالضبط وهذا يعتمد فعليا على حسب المودل الذي انت شغال عليه او المشكلة التي تحاول تحلها. على العكس لو استخدمنا squeeze. فاحنا نبغى ننقص dimension. نشوف الكود التالي:
نلاحظ انه فعلا نقصنا وبعد ذلك طبعنا ال shape للتاكد. الصورة التالية تلخص موضوع squeeze و unsqueeze:
لمتابعة الفديو الخاص بالمقالة، الرجاء الضغط
هنا
ان اصبت فمن الله وان اخطات فمن نفسي .. لا تنسى مشاركة المقالة اذا أعجبتك .. اخوكم رائد الحربي
ولاي ملاحضات او استفسارات يرجى مراسلتي على تويتر @raedalharbi14 أو كتابة التعليق هنا
ان اصبت فمن الله وان اخطات فمن نفسي .. لا تنسى مشاركة المقالة اذا أعجبتك .. اخوكم رائد الحربي
ولاي ملاحضات او استفسارات يرجى مراسلتي على تويتر @raedalharbi14 أو كتابة التعليق هنا
كتير بتلخبط بالدرس ده بس بكل مرة براجعه من هنا بفهم كويس