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

السؤال

نشر

السلام عليكم

انا اسقمت البيانات الي بيانات تدريب واختبار و تطواير بس استخدم ازي بيانات التطواير في النموذج ؟

# Step 1: Split data into 70% training and 30% temporary set (which will be further split)
x_train, x_temp, y_target_train, y_target_temp = train_test_split(x, y_target, test_size=0.3, random_state=42)

# Step 2: Split the temporary set into 15% validation (dev) and 15% test
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)

 

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

أولا يجب عليك أن تقوم بتدريب النموذج على بيانات التدريب (x_train, y_target_train) وفي أثناء التدريب يتم تحديث أوزان النموذج بناء على الخطأ (Loss) الذي يتم حسابه من بيانات التدريب.

بعد ذلك في كل فترة تدريب (Epoch) أو بعد عدد محدد من الخطوات (Steps) يجب أن تقوم بتقييم النموذج على بيانات التطوير (x_dev, y_target_dev) و الهدف من هذا التقييم هو قياس أداء النموذج على بيانات لم يراها من قبل وهي بيانات التطوير التي قمت بتقسيمها  للتأكد من أنه لا توجد مشكلة إفراط التخصيص (Overfitting) لبيانات التدريب. ويمكنك استخدام مقاييس مثل الدقة Accuracy الخطأ (Loss)، أو أي مقياس آخر تراه مناسبا لك.

model.fit(x_train, y_target_train, validation_data=(x_dev, y_target_dev), epochs=50, batch_size=32)

loss, accuracy = model.evaluate(x_test, y_target_test)
print(f"Test Accuracy: {accuracy:.4f}")

هنا في السطر الأول السابق إستخدمنا validation_data=(x_dev, y_target_dev) لتقييم النموذج على بيانات التطوير بعد كل فترة تدريب (Epoch).

وفي السطر الثاني إستخدمنا هذا الكود لتقييم النموذج النهائي على بيانات الاختبار.

ويجب عليك أن تعرف أن بيانات التطوير ليست للتقييم النهائي بل فقط نستخدمها لضبط النموذج. و عندما يكون النموذج جاهزا نستخدم بيانات الاختبار test لتقييم أداء النموذج.

  • 0
نشر
بتاريخ 21 دقائق مضت قال محمد عاطف17:

وعليكم السلام ورحمة الله وبركاته.

أولا يجب عليك أن تقوم بتدريب النموذج على بيانات التدريب (x_train, y_target_train) وفي أثناء التدريب يتم تحديث أوزان النموذج بناء على الخطأ (Loss) الذي يتم حسابه من بيانات التدريب.

بعد ذلك في كل فترة تدريب (Epoch) أو بعد عدد محدد من الخطوات (Steps) يجب أن تقوم بتقييم النموذج على بيانات التطوير (x_dev, y_target_dev) و الهدف من هذا التقييم هو قياس أداء النموذج على بيانات لم يراها من قبل وهي بيانات التطوير التي قمت بتقسيمها  للتأكد من أنه لا توجد مشكلة إفراط التخصيص (Overfitting) لبيانات التدريب. ويمكنك استخدام مقاييس مثل الدقة Accuracy الخطأ (Loss)، أو أي مقياس آخر تراه مناسبا لك.

model.fit(x_train, y_target_train, validation_data=(x_dev, y_target_dev), epochs=50, batch_size=32)

loss, accuracy = model.evaluate(x_test, y_target_test)
print(f"Test Accuracy: {accuracy:.4f}")

هنا في السطر الأول السابق إستخدمنا validation_data=(x_dev, y_target_dev) لتقييم النموذج على بيانات التطوير بعد كل فترة تدريب (Epoch).

وفي السطر الثاني إستخدمنا هذا الكود لتقييم النموذج النهائي على بيانات الاختبار.

ويجب عليك أن تعرف أن بيانات التطوير ليست للتقييم النهائي بل فقط نستخدمها لضبط النموذج. و عندما يكون النموذج جاهزا نستخدم بيانات الاختبار test لتقييم أداء النموذج.

الف شكراا جدا لحضرتك

جزاك الله كل خير

  • 0
نشر

بيانات التدريب نستخدمها كالتالي:

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}%")

 

  • 0
نشر
بتاريخ 3 دقائق مضت قال Mustafa Suleiman:

بيانات التدريب نستخدمها كالتالي:

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}%")

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...