البرمجة

حفظ Pipeline يحتوي على KerasRegressor

لحفظ الـ pipeline الذي يحتوي على KerasRegressor داخله، يجب التأكد من أن الـ estimator الخاص بالـ KerasRegressor قابل للتسلسل. عادةً ما يكون ذلك صعبًا مع الـ estimators التي تحتوي على أشياء مثل الـ neural networks، لأنها تحتوي على حالات داخلية تجعل عملية التسلسل تعقيدية.

إليك طريقة تجنب الخطأ “maximum recursion depth exceeded” والحفظ بنجاح:

  1. ضبط العمق الأقصى للتكرار: قد تحتاج إلى زيادة العمق الأقصى للتكرار بواسطة sys.setrecursionlimit(n)، حيث n هو القيمة التي ترغب في تعيينها. ولكن يجب أن تكون حذرًا عند استخدام هذا الإعداد لأنه قد يؤدي إلى مشاكل أخرى.

  2. استخدام مكتبة dill بدلاً من joblib: يمكنك استخدام مكتبة dill التي تدعم التسلسل لأنواع البيانات المعقدة أكثر من joblib. يمكنك تثبيتها باستخدام pip install dill، ثم استخدامها كما يلي:

python
import dill dill.dump(pipeline, filename)
  1. تحويل الـ Keras model إلى JSON: قبل حفظ الـ pipeline، يمكنك تحويل الـ Keras model إلى JSON بواسطة الكود التالي:
python
model_json = pipeline.named_steps['mlp'].model.to_json()

ثم تحفظ الـ JSON بشكل منفصل وتستخدمه لإعادة بناء الـ model لاحقًا.

  1. تجنب تضمين الـ Keras model: يمكنك تجنب تضمين الـ Keras model داخل الـ pipeline واستخدام نموذج مدرب مباشرة بدلاً من ذلك.

المزيد من المعلومات

بالطبع، إليك بعض المعلومات الإضافية حول حفظ الـ pipeline الذي يحتوي على KerasRegressor:

  1. استخدام pickle بدلاً من joblib: بالنسبة لـ scikit-learn، يمكنك استخدام pickle بدلاً من joblib لحفظ الـ pipeline. يمكنك استخدامه كما يلي:
python
import pickle pickle.dump(pipeline, open(filename, 'wb'))
  1. تحويل الـ Keras model إلى JSON وحفظها كملف منفصل: يمكنك تحويل الـ Keras model إلى JSON وحفظها كملف منفصل، ثم استخدامها لإعادة بناء الـ model لاحقًا. يمكنك استخدام الكود التالي:
python
from keras.models import model_from_json # تحويل الـ Keras model إلى JSON model_json = pipeline.named_steps['mlp'].model.to_json() # حفظ الـ JSON كملف منفصل with open('model.json', 'w') as json_file: json_file.write(model_json)

وعند الحاجة إلى إعادة بناء الـ model:

python
# قراءة الـ JSON من الملف with open('model.json', 'r') as json_file: loaded_model_json = json_file.read() # إعادة بناء الـ model loaded_model = model_from_json(loaded_model_json) # تحميل الوزنات إلى الـ model loaded_model.load_weights('model.h5')
  1. استخدام sklearn.externals.joblib بدلاً من joblib: في بعض الإصدارات القديمة من scikit-learn، قد تحتاج إلى استخدام sklearn.externals.joblib بدلاً من joblib مباشرة. يمكنك استخدامها كما يلي:
python
from sklearn.externals import joblib joblib.dump(pipeline, filename, compress=9)
  1. التحقق من الإعدادات والمكتبات: تأكد من أن جميع الإعدادات والمكتبات التي تستخدمها محدثة إلى أحدث الإصدارات. في بعض الأحيان، مشكلات معينة يمكن أن تكون بسبب نسخ قديمة من البرامج.

زر الذهاب إلى الأعلى