-
المساهمات
1158 -
تاريخ الانضمام
-
تاريخ آخر زيارة
المعلومات الشخصية
-
النبذة الشخصية
مهندس برمجيات
- الموقع
آخر الزوار
549 زيارة للملف الشخصي
إنجازات عبد الوهاب بومعراف
-
أكيد إضافة Dropout و Batch Normalization لكل طبقة في الشبكة العصبية قد يؤثر سلبا على أداء النموذج، حيث يلعب كل منهما دور مختلف في تحسين التدريب، فمثلا Dropout يساعد في تقليل overfitting عن طريق تعطيل بعض الوحدات العصبية عشوائيا، ولكن تطبيقه على كل طبقة قد يؤدي إلى فقدان كبير للمعلومات وإبطاء عملية التعلم، و في المقابل Batch Normalization يعمل على استقرار التوزيع وتسهيل التدريب، ولكنه قد يتعارض مع Dropout، حيث إن الأول يحاول تثبيت التوزيع بينما الثاني يضيف عشوائية، لذا يفضل استخدام Batch Normalization في الطبقات العميقة لتحسين استقرار النموذج، بينما يستخدم Dropout بحذر في الطبقات المخفية فقط، مع تجنب وضعه مباشرة بعد Batch Normalization، و الجمع بينهما بشكل غير مدروس قد يؤدي إلى بطء التدريب وضعف الأداء، لذا من الأفضل تجربة تكوينات مختلفة لمعرفة التوازن الأمثل الذي يناسب البيانات والنموذج.
- 3 اجابة
-
- 1
-
-
لا يوجد مسار أو دورة تغطي كل شيء بشكل كامل، و بالتأكيد من الطبيعي أن تحتاج إلى التعمق بنفسك من مصادر خارجية، وهذا جزء أساسي من التعلم الفعال، أنصحك بالبحث في الكتب والمقالات العلمية، وحل المشاريع العملية، و حتى قراءة الأوراق البحثية في المجال، كما يمكنك الانضمام إلى مجتمعات المهتمين بالرؤية الحاسوبية على GitHub وReddit، حيث ستجد مناقشات قيمة وأحدث التطورات، و الأهم هو أن تحدد الجوانب التي تشعر أنها غير واضحة وتبحث عنها بشكل موجه خصوصا عبر المصادر المفتوحة.
-
تعتمد ResNet على الروابط المتبقية التي تسمح للبيانات بتجاوز بعض الطبقات، مما يساعد في حل مشكلة تراجع التدرج عند تدريب الشبكات العميقة، و بدلا من تعلم إخراج جديد بالكامل تتعلم كل طبقة الفرق بين المدخلات والإخراج المطلوب، مما يسهل تدريب شبكات عميقة جدا مثل ResNet-50 و ResNet-101 و ResNet-152. أما في DenseNet، كل طبقة تتصل بجميع الطبقات السابقة، مما يعزز إعادة استخدام الميزات ويجعل الشبكة أكثر كفاءة في التعلم، و هذا يقلل من عدد المعاملات المطلوبة مقارنة بـ ResNet، حيث تعتمد كل طبقة على الميزات المستخرجة سابقا بدلا من إعادة حسابها، و تساعد هذه البنية في تحسين انتقال المعلومات داخل الشبكة، مما يجعلها فعالة مع بيانات أقل.
- 5 اجابة
-
- 1
-
-
نعم يمكنك استخدام ReLU في الطبقات المخفية حتى لو كنت تعمل على مهمة تصنيف، و في الواقع ReLU هو أحد أكثر دوال التفعيل شيوعا في الطبقات المخفية لشبكات التعلم العميق، لأنه يساعد في التغلب على مشكلة تلاشي التدرج ويجعل عملية التدريب أكثر كفاءة مقارنة بدوال مثل Sigmoid أو TanhK، ولكن في الطبقة الأخيرة يعتمد اختيار دالة التفعيل على نوع التصنيف، حيث إذا كان التصنيف ثنائيا، فيفضل استخدام Sigmoid، أما إذا كان متعدد الفئات، فإن Softmax هو الخيار الأمثل.
- 3 اجابة
-
- 1
-
-
الفرق هو أن confusion_matrix تستخدم لحساب مصفوفة الالتباس فقط، بينما ConfusionMatrixDisplay تستخدم لعرضها بصريا، أي أن confusion_matrix ترجع مصفوفة من القيم العددية توضح أداء النموذج في تصنيف البيانات، لكنها لا تعرضها بشكل رسومي، أما ConfusionMatrixDisplay فهي أداة تأخذ هذه المصفوفة كمدخلات وتقوم برسمها كمخطط بياني باستخدام Matplotlib، مما يسهل تحليل الأخطاء وفهم أداء النموذج بصريا.
- 5 اجابة
-
- 1
-
-
يمكنك استخدام eval في PHP، ولكنه غير مستحسن لأنه قد يؤدي إلى ثغرات أمنية إذا كان هناك أي مدخلات غير آمنة بهذا الشكل: <?php $chance = "a > 0"; $a = 5; // قيمة المتغير a if (eval("return $chance;")) { echo "ok"; } else { echo "not ok"; } ?>
- 3 اجابة
-
- 1
-
-
وسائل الدفع التي يتم قبولها هي بايبال أو بطاقة فيزا، يمكنك الطلب من أحد أقربائك و الذين يملكون هذه البطاقة أن يقومو بالدفع بدل عنك، كما يمكنك التواصل مع مركز المساعدة لأي معلومات أخرى: https://support.academy.hsoub.com/conversations
-
نعم إذا كان العمود يحتوي على قيم فريدة لكل عينة ولا يحمل أي معلومات مفيدة للنموذج، فيمكن حذفه من البيانات قبل تدريب النموذج. وذلك لأن هذه القيم الفريدة لا تساعد النموذج في التعلم أو التعميم، بل قد تؤدي إلى overfitting إذا تم استخدامها، قبل الحذف تأكد أن العمود لا يحتوي على معلومات مفيدة.
- 7 اجابة
-
- 1
-
-
الأفضل يعتمد على الهدف والغاية من إنشائها لكن يبقى استخدام الأدوات الجاهزة مثل TensorFlow أو PyTorch هو الخيار الأمثل إذا كنت تريد توفير الوقت والتركيز على النتائج أو بناء نموذج عملي بسرعة ودقة أما بناء شبكة عصبية من الصفر ضروري فقط إذا كنت تدرس المفاهيم الأساسية أو تحتاج إلى تخصيص عميق لا توفره الأدوات الجاهزة وللتطبيق العملي يوصى باستخدام الأدوات الجاهزة لأنها فعالة ومدعومة بأفضل الممارسات يمكنك مراجعة أكثر من هنا:
- 6 اجابة
-
- 1
-
-
الشبكة العصبية (Neural Network) هي نموذج حوسبي مستوحى من طريقة عمل الدماغ البشري، تستخدم في تحليل الأنماط وحل المشكلات المعقدة وتتكون من طبقات من الوحدات (أو الخلايا العصبية) التي تعالج البيانات عن طريق تعلم الأوزان والانحيازات. بحيث تنقسم الشبكة إلى طبقة إدخال (لإدخال البيانات)، طبقات مخفية (للقيام بالمعالجة)، وطبقة إخراج (لإنتاج النتائج) وتستخدم الشبكات العصبية في تطبيقات مثل التعرف على الصور، معالجة اللغة الطبيعية، وأنظمة التوصية مثلا لإنشاء شبكة عصبية تصنف البيانات الثنائية، يمكن استخدام مكتبة TensorFlow تبنى الشبكة بطبقة إدخال بها 10 ميزات، طبقتين مخفيتين (32 و16 خلية عصبية)، وطبقة إخراج بوظيفة تفعيل Sigmoid وتدرّب الشبكة باستخدام خوارزمية Adam وخسارة Binary Crossentropy وتقيّم للحصول على دقة الأداء. فإنشاؤها يتم بعدة مراحل ببرمجة بسيطة باستخدام مكتبة مثل TensorFlow في Python أين تعرّف شبكة بها 3 طبقات واحدة تأخذ بيانات الصورة، واثنتان لتحليلها، والأخيرة تعطي النتيجة ثم تدرب الشبكة باستخدام صور معروفة كصور لقطط وكلاب حتى تتعلم ثم تختبرها على صور جديدة لترى النتيجة وهكذا وهذه المقالة تشرح مثالا جيدا أنصحك بمراجعته:
-
تحليل السلاسل الزمنية في بايثون هو دراسة البيانات التي تم تسجيلها على فترات زمنية متتالية لاكتشاف الأنماط، الاتجاهات، والتقلبات، بهدف التنبؤ بالقيم المستقبلية أو فهم العلاقات الزمنية ويستخدم في تحليل البيانات لفهم الاتجاهات (Trends) والموسمية (Seasonality) وتوقع البيانات المستقبلية مثل المبيعات أو الأسعار بالإضافة إلى كشف الشذوذ وتحسين اتخاذ القرارات بناء على البيانات الزمنية بحيث يتم استخدام مكتبات مثل pandas لمعالجة البيانات، وmatplotlib للتصور، وstatsmodels أو prophet لبناء النماذج الإحصائية والتنبؤية. و لغة بايثون تسهّل هذا التحليل بفضل أدواتها القوية والمرنة لمعالجة وتحليل السلاسل الزمنية بدقة وفعالية يمكن مراجعة هذه المقالة لمزيد من التفاصيل حول الموضوع:
-
المشكلة في استعلامك هو أنه يتحقق فقط من أقصى تاريخ، بينما المطلوب هو الحصول على آخر سعر قبل التاريخ المحدد لذا عدله للتالي: SELECT product_id, COALESCE( (SELECT new_price FROM Products p2 WHERE p2.product_id = p1.product_id AND p2.change_date <= '2019-08-16' ORDER BY change_date DESC LIMIT 1), 10 ) as price FROM Products p1 GROUP BY product_id; بحيث نستخدم استعلام فرعي للحصول على آخر سعر قبل '2019-08-16' و COALESCE يرجع 10 إذا لم يجد سعرا قبل التاريخ المحدد وأخيرا ORDER BY change_date DESC LIMIT 1 يجلب أحدث سعر.
- 3 اجابة
-
- 1
-
-
هذا الخطأ يحدث أثناء بناء (build) تطبيق Flutter وتحديدا عند عملية إنشاء kernel snapshot وغالبا ما يكون السبب هو في مشاكل في الملفات المؤقتة للمشروع أو تعارض في الإصدارات أو مشكلة في تثبيت Flutter لذا أرجو أولا القيام بتنظيف المشروع: flutter clean ثم قم بحذف ملف pubspec.lock: rm pubspec.lock بعدها قم بتحديث التبعيات: flutter pub get وأعد تشغيل Android Studio أو VS Code أو أيا كان IDE الذي تستخدمه ثم حاول بناء المشروع مرة أخرى: flutter run إذا استمرت المشكلة يمكنك تجربة للتحقق من صحة تثبيت Flutter باستخدام الأمر: flutter doctor ثم تحديث Flutter إلى آخر إصدار: flutter upgrade
-
أيّة دروس تقصد إن كانت متعلقة بالدورات فأرجو طرح أسئلتك أسفل الدرس الخاص به في صندوق التعليقات المخصص لذلك. وفي حال كانت خارجية يمكنني توجيهك لكيفية حل المشكلة من خلال إنشاء صفحة HTML تحتوي على أقسام لكل مثال وكل قسم يحتوي على عنوان وكود برمجة داخل عنصر <pre> للحفاظ على التنسيق. مع إضافة أزرار نسخ بجانب كل كود ثم تفعيلها باستخدام JavaScript عبر وظيفة تستخرج النص وتنسخه إلى الحافظة باستخدام navigator.clipboard يمكن أيضا تنسيق الصفحة باستخدام CSS ثم اختبار الصفحة في المتصفح للتأكد من عرض الأكواد وعملية النسخ بشكل صحيح بعد ذلك يمكنك حفظ الملف وتشغيله للاستخدام أثناء الدروس.
- 4 اجابة
-
- 1
-
-
بالنسبة للمشاريع فهو يتم عملها بالتزامن مع المدرب، كل ما عليك فعله هو متابعة الشروحات مع المدرب وعمل الواجبات والمشاريع ورفع الأكواد تلك وفقا لما تم شرحه من قبل يمكنك الاطلاع على الكيفية من هنا: بما أنك في بداياتك فأرجو التركيز على التطبيق العملي مع المدرب، يمكنك أخذ قسط من الراحة بين كل مسار وآخر للتأكد من أنك قد فهمته جيدا وفي حال لم تفهم شيء سيكون هنالك صندوق للتعليقات مثل الذي هنا أسفل كل درس يمكنك طرح أي استفسار أو مشكلة واجهتك وسنجيبك عليها.