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

Mustafa Suleiman

الأعضاء
  • المساهمات

    14490
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    384

كل منشورات العضو Mustafa Suleiman

  1. الـ L2 Regularization يُضاف إلى الطبقات للحد من مشكلة Overfitting عن طريق معاقبة الأوزان الكبيرة في النموذج. model.add(Dense(64, kernel_regularizer='l2'))
  2. المسار غير صحيح لا يتم العثور عليه، يجب نسخ المسار بالكامل ثم لصقه، اضغط على CTRL + L في المجلد لنسخ مساره.
  3. ستقوم بتشغيل الـ terminal في مسار المجلد الذي به الملف الذي تريد تشغيله، بالنقر عليه بزر الفأرة الأيمن ثم اختر new terminal at folder: بعد ذلك اكتب الأمر التالي: python3 app.py ولو أردت ملف آخر استبدل app.py باسم الملف الذي تريده.
  4. تكلفة الدورة هي 290 دولار، عند حسابها بالجنيه المصري ستكون 14,600 جنيه، لكن الدفع يتم بواسطة الدولار وليس الجنيه، وذلك عن طريق باي بال أو من خلال بطاقة إئتمانية credit card. يوجد حاليًا عرض دورتين بسعر دورة واحدة. بخصوص استرداد الاستثمار أرجو التواصل مع مركز المساعدة لتوضيح الأمر لك، والمناقشة بخصوص الأمور المالية.
  5. بالطبع وتؤثر بشكل مباشر على أداء النموذج ووقت التدريب، للتوضيح Epoch دورة واحدة تمر خلالها الشبكة على كامل بيانات التدريب مرة واحدة، بينما Batch Size هي عدد العينات التي تُعالَج معًا قبل تحديث أوزان النموذج مثلاً 32، 64، 128 عينة في كل خطوة. بالتالي لو لديك 1000 عينة وbatch size = 100، فسيكون لديك 10 خطوات لكل epoch أي يتم القسمة /. زيادة batch size يؤدي إلى تقليل عدد الخطوات في كل epoch لأنك تُعالج عينات أكثر في كل خطوة، وتحتاج إلى تقليل عدد الـ epochs لأن التحديثات تكون أقل تكرارًا ولكن أكثر استقرارًا. ولكن يؤدي إلى تعميم أسوأ Generalization بسبب تقليل الضجيج المفيد في التدرج، أيضًأ الحاجة إلى ذاكرة أكبر. أما تقليل batch size فأحيانًا تحتاج إلى زيادة عدد الـ epochs لأن التحديثات تصبح أكثر تكرارًا ولكنها أكثر ضجيجًا noisy، وسيصبح التدريب أبطأ بسبب التحديثات المتكررة.
  6. MAE أو متوسط الخطأ المطلق تستخدمه لو تريد قياس سهل التفسير بنفس وحدة البيانات الأصلية، وفي وجود قيم متطرفة Outliers، حيث أن MAE أقل حساسية لها مقارنةً بـ MSE/RMSE لأنه لا يعاقب الأخطاء الكبيرة بشكل مبالغ فيه. أيضًا في حال جميع الأخطاء متساوية في الأهمية، بغض النظر عن حجمها مثل تكاليف ثابتة لكل خطأ. كالتنبؤ بأسعار المنازل في سوق مستقر، حيث الأخطاء الصغيرة والكبيرة لها تأثير مماثل على القرار. MSE أو متوسط مربع الخطأ مناسب لمعاقبة الأخطاء الكبيرة بشدة، بمعنى الأخطاء الكبيرة مُكلفة بشكل غير خطي كحوادث السيارات في التنبؤ بالسلامة. وعند استخدام خوارزميات تعتمد على التفاضل كالانحدار الخطي، حيث إن MSE قابل للتفاضل بسلاسة، وذلك يسهل عملية التحسين. لاحظ وحدة القياس هنا مربع الوحدة الأصلية مثل دولار²، وذلك يعقد التفسير المباشر. أما RMSE وهو جذر متوسط مربع الخطأ فمناسب لو تريد مقياسًا بنفس وحدة البيانات الأصلية مثل MAE لكن مع إعطاء وزن أكبر للأخطاء الكبيرة مثل MSE. وعند المقارنة بين نماذج مختلفة، حيث يُفضل RMSE عند الاهتمام بالحد من الأخطاء الكبيرة تحديدًا، كالتنبؤ بدرجات الحرارة في أنظمة الطقس، حيث الأخطاء الكبيرة كـ 10°C أكثر خطرًا من الصغيرة.
  7. يوجد تخصصات أكاديمية ومهنية تتعلق بالأسهم والأسواق المالية، وتشمل تخصصات في الأسهم وبرامج دراسات عليا، ومن بينها المالية ويشمل دراسة الأسواق المالية، والاستثمارات، وإدارة المحافظ الاستثمارية، والتحليل المالي. أما الهندسة المالية فهو مجال متعدد التخصصات يجمع بين المفاهيم المالية والرياضية والهندسية والتكنولوجية، والغرض منه تطبيق الأدوات والأساليب الرياضية والإحصائية لحل المشكلات المالية، وتصميم أدوات مالية جديدة، وإدارة المخاطر. بمعنى تطبيق المبادئ الهندسية والأساليب الرياضية على المشكلات المالية، كالتالي: تصميم وتطوير الأدوات المالية كالمشتقات المالية والخيارات والعقود المستقبلية. إدارة المخاطر المالية بتحليل وتوقع المخاطر المرتبطة بالاستثمارات والأسواق. النمذجة المالية من خلال بناء نماذج رياضية للتنبؤ بحركة الأسواق وتسعير الأصول. التمويل الكمي باستخدام التقنيات الكمية والبرمجة لتحليل البيانات المالية واتخاذ القرارات الاستثمارية. وحتى الخبراء في مجال الأسهم يتعرضون للخسارة، فالأسواق المالية معقدة وتتأثر بعوامل متعددة، بما في ذلك الأحداث الاقتصادية العالمية، والتغيرات السياسية، والمشاعر العامة للمستثمرين. لكن الخبرة والمعرفة التي يمتلكها الخبراء تساعدهم على إدارة المخاطر بتقليل الخسائر المحتملة من خلال تنويع الاستثمارات واستخدام استراتيجيات تحوط. اتخاذ قرارات مبنية على التحليل حيث يعتمدون على التحليل الأساسي والفني لاتخاذ قرارات استثمارية مدروسة، ويستخدمون الخسائر كفرصة للتعلم وتحسين استراتيجياتهم المستقبلية. والخسائر هي جزء طبيعي من عملية الاستثمار، والنجاح على المدى الطويل يتطلب القدرة على التعامل مع تلك الخسائر بفعالية. بخصوص الفرق بين مستثمري الأسهم والمضاربين، فالمستثمرين رضهم الاستثمار على المدى الطويل لتحقيق نمو في رأس المال والاستفادة من توزيعات الأرباح. ويعتمدون على التحليل الأساسي لتقييم القيمة الحقيقية للشركات ويحتفظون بالأسهم لفترات طويلة، أيضًا يميلون إلى تحمل مخاطر أقل من خلال الاستثمار في شركات مستقرة وذات أساسيات قوية. بينما المضاربون فمن الاسم الغرض تحقيق أرباح سريعة من التغيرات القصيرة المدى في أسعار الأسهم، ويعتمدون على التحليل الفني ونماذج الرسوم البيانية لتوقع حركة الأسعار على المدى القصير، كذلك يتحملون مخاطر أعلى، حيث تكون الأرباح أو الخسائر كبيرة وفي فترة زمنية قصيرة. خضت تجربة في سوق بورصة افتراضي واكتشفت العديد من الأمور
  8. هل الأصفار تمثل قيمًا صحيحة كغياب النشاط أو قيمًا مفقودة missing data؟ في حال مفقودة استخدم تقنيات مثل KNNImputer أو تعويضها بالمتوسط/المنوال، ولو صحيحة تعامل معها كجزء من التوزيع الطبيعي للبيانات. ولو المشكلة تصنيف Classification، فاستخدم تقنيات مثل SMOTE لإنشاء عينات جديدة للفئات النادرة، وحدد أوزانًا للفئات كالتالي TensorFlow: class_weight={0: 0.1, 1: 0.9}. أما لو المشكلة انحدار Regression جرب تحويل الـ Target باستخدام log(1 + y) لتقليل تأثير القيم الكبيرة، وحول المشكلة إلى تصنيف بتقسيم الـ Target إلى فئات (0، 5-10، 10-15، إلخ). أو أضف ميزة ثنائية binary feature تشير هل القيمة تساوي صفرًا أم لا. df['is_zero'] = df['efs_combined'].apply(lambda x: 1 if x == 0 else 0) أو استخدم نماذج مع Regularization ومنها L1/L2 في الانحدار الخطي لتجنب التركيز المفرط على الأصفار، كالتالي في Keras: model.add(Dense(64, kernel_regularizer='l2')) بخصوص اختيار الطبقة الأخيرة، ففي Binary Classification في حال تريد احتمالًا بين 0 و1 (وجود/عدم وجود حدث)، استخدم Sigmoid. model.add(Dense(1, activation='sigmoid')) في الإنحدار Regression لو تتنبأ بقيمة رقمية مستمرة كأسعار وقياسات، استخدم Linear. model.add(Dense(1, activation='linear'))
  9. هل حاولتي استخدم خاصية Collect Files من خلال التالي: File > Dependencies > Collect Files فذلك سينشئ مجلد جديد يحتوي على كل الملفات المطلوبة. إن استمرت المشكلة حاولي الضغط بزر الماوس الأيمن على الصور المفقودة، ثم اختيار Replace Footage ثم تحديد موقع الملفات الأصلية.
  10. قم بتوفير صلاحية 755 للمجلد الأب الذي به المجلد الذي تريد مشاركته، كالتالي: sudo chmod 775 /games/action استبدل المسار /games/action بما لديك
  11. متغيرات y_target_test و target لديهما أبعاد غير متوافقة، لاحظ y_target_test يحتوي على 4320 عينة وtarget يحتوي على 3 عينات. ربما الـ target الذي تستخدمه في الدالة ليس توقعات النموذج، بل هو متغير آخر بأبعاد خاطئة، عليك استخدام model.predict() لإنشاء التوقعات: y_pred = deep_hit_model.predict(x_test_scaled) mean_squared_error_value = mean_squared_error(y_target_test, y_pred) أو النموذج يعود بمخرجات متعددة Multi-output Regression، فسيكو يكون y_pred ذو شكل (num_samples, num_outputs)، بينما y_target_test له شكل (num_samples,). بالتالي لو y_target_test له شكل (4320,)، فيجب أن يكون y_pred له شكل (4320, 1) أو (4320,). y_pred = y_pred.reshape(-1, 1) # أو y_target_test = y_target_test.reshape(-1, 1) أو ربما استخدمت اسم متغير خاطئ مثل target بدلًا من y_pred.
  12. هل لديك أحد أقرباءك أو أصدقاءك خارج البلد لشراء الدورة لك؟ فهو يستطيع شراء الدورة وتوفير بيانات الحساب لك. لديك أيضًا بطاقة الهدية فمن خلالها يستطيع هو شراء بطاقة لك ثم تستخدمها لشحن رصيدك، ثم استخدامها كما تريد بالموقع وحتى الإشتراك بالعروض. عامًة إن تعذر الأمر عليك، أرجو مناقشة ذلك من خلال مركز المساعدة لشرح الخيارات المتاحة بالنسبة لك.
  13. ما حصلت عليه هو أنّ RMSE يساوي حوالي 52% من متوسط القيم الفعلية، وتلك النسبة مرتفعة في معظم التطبيقات العملية خاصةً في التوقعات المالية أو الطبية، بالتالي تحتاج إلى تحسين المعلمات، زيادة البيانات، وأمور أخرى. وللعلم النسبة المئوية للخطأ تُحسب باستخدام MAPE (Mean Absolute Percentage Error)، لكونه مقياسًا معياريًّا لفهم متوسط الخطأ النسبي لكل عينة. ما قمت به أنت هو (RMSE / Mean * 100) وذلك يعطي نتائج مضللة في حال تباين البيانات كبير. loss, accuracy = deep_hit_model.evaluate(x_test_scaled, y_target_test) print(f"Test Loss (MSE): {loss}") mse = loss rmse = np.sqrt(mse) print(f"Test RMSE: {rmse}") mean_actual = np.mean(y_target_test) percentage_error = (rmse / mean_actual) * 100 print(f"Percentage Error (RMSE/Mean): {percentage_error:.2f}%") # الأفضل: حساب MAPE للدقة y_pred = deep_hit_model.predict(x_test_scaled) mape = np.mean(np.abs((y_target_test - y_pred) / y_target_test)) * 100 print(f"MAPE: {mape:.2f}%")
  14. دالة التنشيط ReLU الخيار الافتراضي الأول والأكثر استخدامًا للطبقات المخفية في معظم أنواع الشبكات العصبية، سواء كانت شبكات عصبية عميقة DNNs أو شبكات عصبية التفافية CNNs. أيضًا تساعد في تقليل مشكلة تلاشي التدرج، خاصة في الشبكات العميقة. ففي حال قيمة الدخل موجبة، يكون التدرج (المشتقة) ثابتاً ويساوي 1، وذلك يسمح بتدفق التدرجات بشكل أفضل خلال الشبكة مقارنة بدوال أخرى مثل Tanh أو Sigmoid في المناطق التي تتشبع فيها أي عندما تصبح مشتقاتها قريبة من الصفر. وعملية حساب ReLU بسيطة جداً مقارنة بدوال مثل Tanh التي تتطلب عمليات أسية، الأمر الذي يجعلها أسرع حسابياً، وذلك مهم خصوصاً في الشبكات الكبيرة والتدريب على كميات بيانات ضخمة. وبسبب أنها تُخرج صفر للقيم السالبة، فهي تساعد في توليد الخفة في التنشيطات، بمعنى عدداً من الخلايا العصبية ربما تُصبح غير نشطة (تُخرج صفر) لبعض المدخلات، وهو ما يُمكن أن يجعل الشبكة أكثر كفاءة وأقل عرضة للتكيف الزائد Overfitting. بينما دالة التنشيط Tanh كانت تستخدم في الطبقات المخفية، ولكنها أصبحت أقل استخدامًا من ReLU في معظم تطبيقات التعلم العميق الحديثة، وأحيانًأ مفيدة عند الرغبة في أن تكون مخرجات الخلايا متمركزة حول الصفر. أيضًا لو ما تريد تنفيذه يتطلب أن تكون قيم المخرجات في نطاق محدد بين -1 و 1، فبعض أنواع الشبكات العصبية المتكررة RNNs أو مهام توليد النصوص التي تتطلب قيم احتمالية سالبة، بالتالي Tanh مناسبة للطبقة الأخيرة أي طبقة المخرجات.
  15. ربما المشكلة في مدير الملفات nautilus حاول إعادة تثبيته والتجربة: sudo apt-get install --reinstall nautilus ثم: sudo service smbd restart إن استمرت المشكلة، تفقد صلاحيات المجلد الذي تحاول مشاركته فيجب أن تكون الصلاحية هي 755. إن استمرت المشكلة قم بإرفاق الإعدادات في ملف smb.conf.
  16. سأوضح لك الخطوات من خلال C++ وحاول تنفيذها لكي تحقق استفادة، أولاً، تحتاج إلى تحديد كيفية تمثيل البيانات التي تحتوي على السعر، إما في هيكل struct أو صنف class لتجميع البيانات ذات الصلة معًا. ثم كتابة دالة تستقبل البيانات وتقوم بترتيبها، بالخطوات التالية: يجب أن تستقبل الدالة البيانات التي تريد ترتيبها كمدخل. استخدام خوارزمية ترتيب جاهزة في ++C مثل std::sort من مكتبة <algorithm>. خوارزمية std::sort تحتاج إلى معرفة كيف تقارن بين عنصرين لتحديد ترتيبهما، وأنت تريد الترتيب حسب السعر من الأعلى إلى الأقل، أي ستحتاج إلى توفير دالة مقارنة أو تعبير Lambda Expression لتحديد ذلك المعيار. وفي دالة المقارنة عليك كتابة دالة عادية تستقبل منتجين كمدخلات على إفتراض أنّ البيانات هي لمنتجات، وتعود لنا بالقيمة true في حال المنتج الأول يجب أن يسبق الثاني في الترتيب، و false خلاف ذلك. أما تعبير لمدا فهو هو طريقة مختصرة لتعريف دالة صغيرة بدون اسم، وبإمكانك استخدامه مباشرة مع std::sort لتوفير نفس منطق المقارنة السابقة. الآن، داخل دالة الترتيب الرئيسية، عليك استخدام std::sort لتطبيق الترتيب على البيانات التي استقبلتها، مع استخدام دالة المقارنة أو تعبير لمدا الذي عرفته.
  17. الترتيب مهم، وأنت قمت بالتالي Dense ثم BatchNorm ثم Dropout، أي التفعيل يحدث قبل تطبيق BatchNorm. لتحسين الأداء، من الأفضل استخدام الترتيب Dense ثم BatchNorm ثم Activation ثم Dropout deep_hit_model = keras.models.Sequential([ keras.layers.Input(shape=(57)), keras.layers.Dense(8), keras.layers.BatchNormalization(), keras.layers.Activation('relu'), keras.layers.Dropout(0.1), keras.layers.Dense(128), keras.layers.BatchNormalization(), keras.layers.Activation('relu'), keras.layers.Dropout(0.3), keras.layers.Dense(64), keras.layers.BatchNormalization(), keras.layers.Activation('relu'), keras.layers.Dense(32), keras.layers.BatchNormalization(), keras.layers.Activation('relu'), keras.layers.Dense(1, activation='sigmoid') ])
  18. بالطبع يجب أن تكون البيانات المُدخلة data_test متنوعة وليست مكررة وبحجم مناسب، فثلاث صفوف لا شيء بالنسبة للنماذج. أيضًا مُهيأة بشكل صحيح تطبيع، ترميز، وخلافه كما تم تدريب النموذج أي كما يتوقعها النموذج. بالتالي طالما البيانات صغيرة جدًا أو غير متنوعة، جرب إضافة بيانات أكثر للاختبار: import numpy as np sample_indices = np.random.choice(len(data_test), size=10, replace=False) sample_data = data_test[sample_indices] target = deep_hit_model.predict(sample_data) print(target)
  19. لا مشكلة، لكن عليك استيعاب وظيفة Batch Normalization (BN) فهي تُحسّن استقرار التدريب عبر تطبيع المدخلات لكل طبقة باستخدام متوسط وتباين الدُفعة، لتقليل الاعتماد على تهيئة الأوزان وتسريع التعلّم. أما Dropout يقلل الإفراط في التجهيز Overfitting عن طريق إيقاف وحدات عشوائية أثناء التدريب، وذلك يجبر الشبكة على عدم الاعتماد على وحدات محددة. بالتالي عليك وضع BN بعد Dropout خاصة في الطبقات الكثيفة، أما في حالة استخدام BN قبل التنشيط، فسيكون الترتيب: x = Dense(128)(x) x = BatchNormalization()(x) x = Activation('relu')(x) x = Dropout(0.5)(x)
  20. في حال قمت بتنفيذ المشاريع الموجودة بالفعل في الدورة، فالمشكلة لديك هي في التطبيق على الأساسيات، أي بدون استخدام أي مكتبات مثل بوتستراب. هل قمت بتطبيق ما تم ذكره هنا، في سؤال سابق لك؟ ستحتاج إلى العودة خطوة للوراء، من أجل التطبيق على الأساسيات، وكبداية تنفيذ التحديات الموجودة على frontend mentor مع تحديد التمارين الخاصة بالمستوى المبتدئ newbie ثم junior ثم تستطيع زيادة الصعوبة فيما بعد إلى intermediate، وإليك التمارين مباشرًة: https://www.frontendmentor.io/challenges?difficulty=1&type=free%2Cfree-plus اختر أي تمرين تراه مناسب ثم حاول تنفيذه، وفي حال واجهتك مشكلة تستطيع الاستفسار هنا، ومع الوقت والإلتزام والصبر سيتحسن مستواك وتستطيع بعدها تنفيذ تصميم كامل.
  21. ممتاز، إذن الهدف هو التنفيذ وليس التعلم من أجل التخصص، تحتاج تعلم الأداة أقصد، أنصحك إذن بتعلم دورة تطوير التطبيقات باستخدام لغة JavaScript. من خلالها ستتمكن من بناء مواقع وتطبيقات للهاتف أو للحاسوب، بالتالي تستطيع تعلم لغة تمكنك من تنفيذ أي شيء تريده تقريبًا. الدورة الأخرى المناسبة هي دورة تطوير تطبيقات الويب باستخدام لغة PHP وذلك لو أردت طريقة أسهل لبناء المواقع ولكن ليس تطبيقات الهاتف أو سطح المكتب حيث لغة PHP غير مناسبة لذلك. بعد تقرير أي دورة ستختار مما سبق، ستحتاج إلى دورة تطوير واجهات المستخدم أيضًا في حال ستقوم ببناء مواقع الويب لتتمكن من بناء (التصميم أي الواجهة الأمامية الأزرار والصور وخلافه). لكن لو تريد تحليل البيانات واستخدام الذكاء الاصطناعي في عملك، إذن هناك دورتي: دورة تطوير التطبيقات باستخدام لغة Python (تستطيع من خلالها بناء مواقع ويب كاملة أيضًا) دورة الذكاء الاصطناعي ويوجد حاليًا عرض دورتين بسعر دورة واحدة.
  22. ما هو الهدف من تعلم البرمجة؟ هل هو العمل؟ إن كان كذلك فما هو عمرك الحالي، وهل تنوي العمل بشركة أو مواقع العمل الحر؟ أيضًا ما هو وقت الدراسة المتاح لك يوميًا؟
  23. بيانات التدريب نستخدمها كالتالي: model.fit(x_train, y_target_train, epochs=..., batch_size=...) و بيانات Validation/Dev Data، نستخدمها لمراقبة أداء النموذج أثناء التدريب كاكتشاف Overfitting، وضبط الهايبربارامترات مثل معدل التعلم، عدد الطبقات، أيضًا اختيار أفضل إصدار من النموذج. الأمر الذي يساعدك في تحديد متى تتوقف عن التدريب Early Stopping؟ وأي نموذج أفضل؟ وذلك في مكتبات مثل Keras/TensorFlow: history = model.fit( x_train, y_target_train, validation_data=(x_dev, y_target_dev), epochs=..., batch_size=... ) أو في Scikit-Learn: model.fit(x_train, y_target_train) val_score = model.score(x_dev, y_target_dev) ثم بيانات الاختبار لتقييم أداء النموذج النهائي بشكل موضوعي بعد انتهاء التدريب والضبط. test_loss, test_accuracy = model.evaluate(x_test, y_target_test) ولا تستخدم بيانات الاختبار أبدًا أثناء التدريب أو الضبط، فهي مخصصة للتقييم النهائي فقط، وفي حال ليسل لديك بيانات تطوير كافية، فاستخدام تقنيات مثل Cross-Validation. إليك مثال كامل: from sklearn.model_selection import train_test_split from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense x_train, x_temp, y_target_train, y_target_temp = train_test_split(x, y_target, test_size=0.3, random_state=42) x_dev, x_test, y_target_dev, y_target_test = train_test_split(x_temp, y_target_temp, test_size=0.5, random_state=42) model = Sequential([ Dense(64, activation='relu', input_shape=(input_dim,)), Dense(32, activation='relu'), Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) history = model.fit( x_train, y_target_train, validation_data=(x_dev, y_target_dev), epochs=20, batch_size=32 ) test_loss, test_accuracy = model.evaluate(x_test, y_target_test) print(f"Test Accuracy: {test_accuracy * 100:.2f}%")
  24. تفقد الموقع بدءًا من 15 مايو القادم: https://depi.gov.eg/StaticContent/Calendar
×
×
  • أضف...