Ali Ahmed55 نشر 13 فبراير أرسل تقرير نشر 13 فبراير السلام عليكم هو اي الResNet والDenseNet ؟ 2 اقتباس
0 Chihab Hedidi نشر 13 فبراير أرسل تقرير نشر 13 فبراير بالنسبة ل ResNet فهي شبكة عصبية عميقة قدمت مفهوم الوحدات المتبقية أو Residual Blocks التي تستخدم اتصالات مختصرة لتسهيل تدريب الشبكات العميقة جدا، و هذه الاتصالات تسمح للإشارة بالمرور مباشرة عبر الطبقات، مما يحل مشاكل تلاشي التدرج وتدهور الدقة، كما أن ResNet تستخدم على نطاق واسع في التصنيف، الكشف عن الأشياء، وتجزئة الصور. أما DenseNet هي شبكة عصبية تعتمد على فكرة توصيل كل طبقة بكل طبقة أخرى بشكل مباشر، مما يخلق اتصالات كثيفة بين الطبقات، و هذا الهيكل يحسن تدفق التدرج ويقلل من عدد المعلمات المطلوبة، مما يجعلها أكثر كفاءة في التدريب، و أيضا DenseNet تستخدم في التصنيف، الكشف عن الأشياء، وتجزئة الصور، وتعرف بكفاءتها العالية في استخدام الموارد. 1 اقتباس
0 عبد الوهاب بومعراف نشر 13 فبراير أرسل تقرير نشر 13 فبراير تعتمد ResNet على الروابط المتبقية التي تسمح للبيانات بتجاوز بعض الطبقات، مما يساعد في حل مشكلة تراجع التدرج عند تدريب الشبكات العميقة، و بدلا من تعلم إخراج جديد بالكامل تتعلم كل طبقة الفرق بين المدخلات والإخراج المطلوب، مما يسهل تدريب شبكات عميقة جدا مثل ResNet-50 و ResNet-101 و ResNet-152. أما في DenseNet، كل طبقة تتصل بجميع الطبقات السابقة، مما يعزز إعادة استخدام الميزات ويجعل الشبكة أكثر كفاءة في التعلم، و هذا يقلل من عدد المعاملات المطلوبة مقارنة بـ ResNet، حيث تعتمد كل طبقة على الميزات المستخرجة سابقا بدلا من إعادة حسابها، و تساعد هذه البنية في تحسين انتقال المعلومات داخل الشبكة، مما يجعلها فعالة مع بيانات أقل. 1 اقتباس
0 Ali Ahmed55 نشر 13 فبراير الكاتب أرسل تقرير نشر 13 فبراير طيب هي بتكبت في اي جزاء في الكود ده # 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([ # - 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), keras.layers.BatchNormalization(), keras.layers.Activation('tanh'), 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), keras.layers.BatchNormalization(), keras.layers.Activation('tanh'), 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), keras.layers.BatchNormalization(), keras.layers.Activation('tanh'), # - 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), keras.layers.BatchNormalization(), keras.layers.Activation('tanh'), # - 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'), ]) 1 اقتباس
0 Mustafa Suleiman نشر الاثنين في 10:35 أرسل تقرير نشر الاثنين في 10:35 بتاريخ On 13/2/2025 at 19:34 قال Ali Ahmed55: طيب هي بتكبت في اي جزاء في الكود ده # 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([ # - 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), keras.layers.BatchNormalization(), keras.layers.Activation('tanh'), 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), keras.layers.BatchNormalization(), keras.layers.Activation('tanh'), 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), keras.layers.BatchNormalization(), keras.layers.Activation('tanh'), # - 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), keras.layers.BatchNormalization(), keras.layers.Activation('tanh'), # - 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'), ]) لا نستخدم ذلك بشكل مباشر هنا، لأن النموذج الحالي مبني باستخدام طبقات بسيطة Dense, BatchNormalization بدون ميزات skip connections في ResNet أو التوصيلات الكثيفة dense blocks في DenseNet. لو أردت دمج مفاهيم ResNet أو DenseNet في النموذج، يجب تعديل بنية الطبقات كالتالي، أولاً تُضاف Residual Connections بين الطبقات، حيث يُضاف إخراج طبقة سابقة إلى إخراج طبقة لاحقة. وستقوم بتعديل جزء من الكود باستخدام Functional API لأن Sequential لا يدعم التوصيلات المتفرعة Residual Connections. from tensorflow.keras.layers import Add input_layer = keras.layers.Input(shape=(input_shape,)) x = keras.layers.Dense(8)(input_layer) x = keras.layers.BatchNormalization()(x) x = keras.layers.Activation('tanh')(x) residual = x x = keras.layers.Dense(128)(x) x = keras.layers.BatchNormalization()(x) x = keras.layers.Activation('tanh')(x) x = Add()([x, residual]) # إضافة الوصلة المتبقية هنا from tensorflow.keras.layers import Add input_layer = keras.layers.Input(shape=(input_shape,)) x = keras.layers.Dense(8)(input_layer) x = keras.layers.BatchNormalization()(x) x = keras.layers.Activation('tanh')(x) residual = x x = keras.layers.Dense(128)(x) x = keras.layers.BatchNormalization()(x) x = keras.layers.Activation('tanh')(x) x = Add()([x, residual]) # إضافة الوصلة المتبقية هنا # باقي الطبقات ثم تُضاف Dense Connections حيث يُوصَل إخراج كل طبقة سابقة كمدخل لجميع الطبقات اللاحقة في الـblock. from tensorflow.keras.layers import Concatenate def dense_block(x): x1 = keras.layers.Dense(128)(x) x1 = keras.layers.BatchNormalization()(x1) x1 = keras.layers.Activation('tanh')(x1) x = Concatenate()([x, x1]) # دمج الإخراج مع المدخلات الأصلية x2 = keras.layers.Dense(64)(x) x2 = keras.layers.BatchNormalization()(x2) x2 = keras.layers.Activation('tanh')(x2) x = Concatenate()([x, x2]) return x input_layer = keras.layers.Input(shape=(input_shape,)) x = dense_block(input_layer) وللحفاظ على بنية Sequential، الأفضل استخدام حزم جاهزة مثل tensorflow.keras.applications.ResNet50، لكن ذلك غير عملي للشبكات الصغيرة. 1 اقتباس
0 Ali Ahmed55 نشر الاثنين في 12:09 الكاتب أرسل تقرير نشر الاثنين في 12:09 الف شكرااا جدا لحضرتك جزاك الله كل خير اقتباس
السؤال
Ali Ahmed55
السلام عليكم
هو اي الResNet والDenseNet ؟
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.