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

الدالة compile في كيراس Keras وتنسرفلو Tensorflow

عامر ابراهيم

السؤال

Recommended Posts

  • 1

الدالة compile هي الدالة المسؤولة عن تكوين النموذج بعد أن تكون قد قمت بتحديد هيكليته (طبقاته وبارمتراته). حيث تقوم بترجمة هذه الهيكلية وتحديد المعلومات الأخرى اللازمة لتكوين النموذج وتجهيزه لبدء عملية التدريب. ولها الشكل التالي:

Model.compile(
    optimizer="rmsprop",
    loss=None,
    metrics=None,
    weighted_metrics=None,
    steps_per_execution=None,
    **kwargs
)

حيث أن الوسيط الأول هو المحسَن المستخدم (وفي الرابط في الأسفل هناك شرح لأشهر نوعين من المحسنات وهما Rmsprop و Adam). أما الوسيط الثاني فهو دالة التكلفة المراد تطبيقها (غالباً نستخدم Binary_cross_Entropy مع مسائل التصنيف الثنائي و Categorical Crossentropy مع مسائل التصنيف المتعدد أو Spare Categorical Crossentropy) وأيضاً تجدهما في الروابط وكذلك يمكنك القيام بتعريف دالة التكلفة الخاصة بك واستخدامها كما تم شرح ذلك في الرابط في الأسفل. أما الوسيط الثالث فهو معيار قياس أداء النموذج خلال التدريب وغالباً نستخدم المعيار Accuracy عندما تكون البيانات متوازنة أو F1-Score عندما تكون البيانات غير متوازنة. أما الوسيط الخامس فهو لتوزين الفئات حيث نمرر لها قائمة المقاييس التي سيتم تقييمها ووزنها حسب وزن العينة sample_weight  أو وزن الفئة class_weight  أثناء التدريب والاختبار. أما الوسيط الأخير steps_per_execution فهذا يتعلق بسرعة التنفيذ و الافتراضي هو 1. ويمث عدد الدُفعات batches التي سيتم تنفيذها أثناء كل استدعاء  tf.function. والفائدة منه تكمن في أن تشغيل دفعات متعددة داخل استدعاء tf.function واحد إلى تحسين الأداء بشكل كبير في حال كنت تستخدم وحدات TPU(على كولاب مثلاً). وما يلي هو مثال بسيط لها:

model.compile(optimizer=tf.keras.optimizer.Adam(learning_rate=1e-3), # هنا مررنا المحسن
              loss=tf.keras.losses.BinaryCrossentropy(), # دالة التكلفة
              metrics=[tf.keras.metrics.BinaryAccuracy(), # ومقياسين للأداء 
                       tf.keras.metrics.FalseNegatives()])

كما يمكنك أن تجد مثال عنها في كل رابط من الروابط المذكورة في الأسفل  مع نماذج بسيطة وواضحة.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

الدالة compile هي المسئولة عن تعريف:

دالة الفقد Loss : مثل  Binary_cross_Entropy أو Categorical Crossentropy وهما الأكثر شهرة واستخداماً.

المحسن Optimizer: مثل Adam و rmsprop 

مقياس الدقة الذي تستخدمه metrics: مثل Accuracy أو F1-score أو precision غيرها تبعا لحالة البيانات.  

كما هو موضح في تعريفها التالي:

Model.compile(
    optimizer="rmsprop",
    loss=None,
    metrics=None,
    weighted_metrics=None,
    steps_per_execution=None,
    **kwargs
)

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

inputs = tf.keras.layers.Input(shape=(3,))
outputs = tf.keras.layers.Dense(2)(inputs)
model = tf.keras.models.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer="Adam", loss="mse", metrics=["mae"])
model.metrics_names

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...