Ali Ahmed55 نشر 8 فبراير أرسل تقرير نشر 8 فبراير السلام عليكم هو عادي ان استخدم الDropout مع BatchNormalization عند بناء شبكه عصبيه ؟ 1 اقتباس
0 Mustafa Suleiman نشر 8 فبراير أرسل تقرير نشر 8 فبراير لا مشكلة، لكن عليك استيعاب وظيفة Batch Normalization (BN) فهي تُحسّن استقرار التدريب عبر تطبيع المدخلات لكل طبقة باستخدام متوسط وتباين الدُفعة، لتقليل الاعتماد على تهيئة الأوزان وتسريع التعلّم. أما Dropout يقلل الإفراط في التجهيز Overfitting عن طريق إيقاف وحدات عشوائية أثناء التدريب، وذلك يجبر الشبكة على عدم الاعتماد على وحدات محددة. بالتالي عليك وضع BN بعد Dropout خاصة في الطبقات الكثيفة، أما في حالة استخدام BN قبل التنشيط، فسيكون الترتيب: x = Dense(128)(x) x = BatchNormalization()(x) x = Activation('relu')(x) x = Dropout(0.5)(x) 1 اقتباس
0 Ali Ahmed55 نشر 8 فبراير الكاتب أرسل تقرير نشر 8 فبراير بتاريخ 2 دقائق مضت قال Mustafa Suleiman: لا مشكلة، لكن عليك استيعاب وظيفة Batch Normalization (BN) فهي تُحسّن استقرار التدريب عبر تطبيع المدخلات لكل طبقة باستخدام متوسط وتباين الدُفعة، لتقليل الاعتماد على تهيئة الأوزان وتسريع التعلّم. أما Dropout يقلل الإفراط في التجهيز Overfitting عن طريق إيقاف وحدات عشوائية أثناء التدريب، وذلك يجبر الشبكة على عدم الاعتماد على وحدات محددة. بالتالي عليك وضع BN بعد Dropout خاصة في الطبقات الكثيفة، أما في حالة استخدام BN قبل التنشيط، فسيكون الترتيب: x = Dense(128)(x) x = BatchNormalization()(x) x = Activation('relu')(x) x = Dropout(0.5)(x) انا عمل كده # The 'deep_hit_model' is a Sequential model in Keras, meaning the layers are stacked in a linear fashion. deep_hit_model = keras.models.Sequential([ #keras.layers.Input(shape=(57)), # - The first layer is a Dense layer with 8 units and 'tanh' activation function. This layer is responsible for transforming the input into a higher-dimensional space. keras.layers.Dense(8 , activation='relu'), keras.layers.BatchNormalization(), keras.layers.Dropout(0.1), # - The second layer is a Dense layer with 128 units and 'tanh' activation function, allowing the model to learn more complex patterns. keras.layers.Dense(128 , activation='relu'), keras.layers.BatchNormalization(), keras.layers.Dropout(0.3), # - The third layer is a Dense layer with 64 units and 'tanh' activation function, further processing the data with non-linearities. keras.layers.Dense(64 , activation='relu'), keras.layers.BatchNormalization(), # - The fourth layer is a Dense layer with 32 units and 'tanh' activation function, continuing to refine the representation of the data. keras.layers.Dense(32 , activation='relu'), keras.layers.BatchNormalization(), # - The final layer is a Dense layer with 1 unit and 'sigmoid' activation function, producing an output between 0 and 1, suitable for binary classification. keras.layers.Dense(1 , activation='sigmoid'), ]) هل الترتيب مهم ؟ اقتباس
0 Mustafa Suleiman نشر 8 فبراير أرسل تقرير نشر 8 فبراير الترتيب مهم، وأنت قمت بالتالي 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') ]) 1 اقتباس
0 Ali Ahmed55 نشر 9 فبراير الكاتب أرسل تقرير نشر 9 فبراير بتاريخ 14 ساعة قال Mustafa Suleiman: الترتيب مهم، وأنت قمت بالتالي 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') ]) الف شكراا جدا لحضرتك جزاك الله كل خير اقتباس
السؤال
Ali Ahmed55
السلام عليكم
هو عادي ان استخدم الDropout مع BatchNormalization عند بناء شبكه عصبيه ؟
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.