اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

هل من الأفضل دائمًا استخدام الدوال الجاهزة مثل image_dataset_from_directory في TensorFlow أو الأدوات المشابهة في PyTorch لتحميل البيانات، أم أن هناك أحيانًا يكون من الأفضل الاعتماد على مكتبات مثل OS و OpenCV (cv2)؟

وهل في الغالب يُستهلك معظم الوقت في تحميل الصور ومعالجتها أكثر من بناء شبكة CNN نفسها؟

Recommended Posts

  • 0
نشر
بتاريخ 19 دقائق مضت قال Ali Ahmed55:

السلام عليكم

هل من الأفضل دائمًا استخدام الدوال الجاهزة مثل image_dataset_from_directory في TensorFlow أو الأدوات المشابهة في PyTorch لتحميل البيانات، أم أن هناك أحيانًا يكون من الأفضل الاعتماد على مكتبات مثل OS و OpenCV (cv2)؟

وعليكم السلام ورحمة الله وبركاته،

يعتمد اختيارك على تخصيص المعالجة او مدى تعقيد البيانات:

ففي معظم الأحيان الأدوات الجاهزة مثل image_dataset_from_directory في TensorFlow أو DataLoader في PyTorch أفضل وأسهل، لأنها توفر لك التحميل والتقسيم والتجهيز بسرعة.

لكن اذا اردت معالجة خاصة أو تتعامل مع بيانات غير عادية يمكنك استخدام os أو cv2 .

بتاريخ 20 دقائق مضت قال Ali Ahmed55:

وهل في الغالب يُستهلك معظم الوقت في تحميل الصور ومعالجتها أكثر من بناء شبكة CNN نفسها؟

نعم، في الغالب الوقت الأكبر يستهلك في تحميل الصور ومعالجتها أكثر من تدريب شبكة CNN نفسها.

  • 0
نشر

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

ومن خلالها تستطيع تحميل مجموعة بيانات كاملة ببضعة أسطر فقط، وتلك الدوال ليست مجرد اختصار في TensorFlow، بل تقوم image_dataset_from_directory بإنشاء كائن tf.data.Dataset، وهو مصمم خصيصًا للأداء العالي، ويستخدم تقنيات مثل الجلب المسبق Prefetching لتحميل الدفعة التالية من البيانات في الخلفية بينما تتدرب الشبكة على الدفعة الحالية، لمنع اختناق وحدة معالجة الرسومات  وانتظارها للبيانات، وتقنية التوازي Parallelism لقراءة ومعالجة عدة صور في نفس الوقت باستخدام أنوية المعالج المتعددة.

أيضًا التخزين المؤقت لتخزين البيانات في الذاكرة بعد قراءتها لأول مرة لتسريع الوصول إليها في الدورات التدريبية Epochs التالية.

والكائن الناتج منها يكون جاهز للاستخدام مباشرة مع model.fit() في Keras أو في حلقة التدريب المخصصة في PyTorch، دون الحاجة لتحويلات إضافية، أيضًا تقوم تلقائيًا باستنتاج أسماء الفئات Classes من أسماء المجلدات، وتوفر خيارات سهلة للتقسيم إلى دفعات Batching والخلط Shuffling.

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

بتاريخ 17 ساعة قال Ali Ahmed55:

وهل في الغالب يُستهلك معظم الوقت في تحميل الصور ومعالجتها أكثر من بناء شبكة CNN نفسها؟

صحيح من ناحيتين وقت المطور و وقت التنفيذ، فالأول كتابة بنية شبكة CNN باستخدام Keras أو PyTorch هي الجزء الأسرع والمباشر في المشروع، فهي عبارة عن تكديس طبقات فوق بعضها البعض (Conv2D, MaxPooling2D, Dense ).

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...