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

السؤال

Recommended Posts

  • 0
نشر

لا مشكلة، لكن عليك استيعاب وظيفة Batch Normalization (BN) فهي تُحسّن استقرار التدريب عبر تطبيع المدخلات لكل طبقة باستخدام متوسط وتباين الدُفعة، لتقليل الاعتماد على تهيئة الأوزان وتسريع التعلّم.

أما Dropout يقلل الإفراط في التجهيز Overfitting عن طريق إيقاف وحدات عشوائية أثناء التدريب، وذلك يجبر الشبكة على عدم الاعتماد على وحدات محددة.

بالتالي عليك وضع BN بعد Dropout خاصة في الطبقات الكثيفة، أما في حالة استخدام BN قبل التنشيط، فسيكون  الترتيب:

x = Dense(128)(x)
x = BatchNormalization()(x)
x = Activation('relu')(x)
x = Dropout(0.5)(x)
  • 0
نشر
بتاريخ 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
نشر

الترتيب مهم، وأنت قمت بالتالي 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')
])

 

  • 0
نشر
بتاريخ 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')
])

 

الف شكراا جدا لحضرتك جزاك الله كل خير

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...