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

السؤال

نشر

كيف يمكننا القيام بإعادة تدريب النموذج من حيثما توقف. فأنا أريد أن أدرب نموذجي الآن على مجموعة بيانات وفي المستقبل سيكون لدي المزيد من البيانات وأريد أن يتم تدريب النموذج عليها من دون الحاجة إلى إعادة تدريب النموذج من البداية مرة أخرى؟
 

Recommended Posts

  • 0
نشر

حسناً تابع في المثال التالي:

import tensorflow as tf
from tensorflow import keras
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_val, y_val) = mnist.load_data()
x_train = x_train / 255.0
x_val   = x_test / 255.0
# تعريف نموذج
def model():
  m = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(456, activation="relu"),  
    tf.keras.layers.Dropout(0.5),
    tf.keras.layers.Dense(128, activation="relu"),  
    tf.keras.layers.Dropout(0.3),
    tf.keras.layers.Dense(10, activation="softmax")
    ])
  return m
model=model()
model.compile(optimizer='rmsprop', loss='sparse_categorical_crossentropy',metrics=['acc'])
# تدريب النموذج
model.fit(x_train, y_train, epochs = 10, validation_data = (x_test,y_test))

الآن بشكل عام model.save تقوم بحفظ كل المعلومات اللازمة لمواصلة التدريب، لكن المشكلة الوحيدة هي حالة ال Optimizer فقد لايتم تحميلها أو حفظها بشكل  صحيح (يحدث فقدان للمعلومات). ولهذا السبب ينصح بحفظ نموذجك بتنسيق تنسرفلو أي tf  بدلاً من حفظها بالامتداد الافتراضي (h5). 

# حفظ النموذج بتنسيق تنسرفلو
model.save('./MyModel_tf',save_format='tf')

الآن لو أردت إعادة تحميله ومواصلة التدريب:

# تحميل النموذج
model = tf.keras.models.load_model('./MyModel_tf')
# التدريب
model.fit(....)
  • 0
نشر

ببساطة يمكنك في البداية عمل النموذج الذي تريد تدريبه الأن ثم تقوم بحفظ النموذج على حاسوبك كملف، الملف الذي تحفظه يحتوى على شكل النموذج وكذلك قيم العناصر التي تم تدريبها، بعد ذلك يمكنك تحميل النموذج واستكمال تدريبه، أنظر الكود التالي كمثال:

import numpy as np
import tensorflow as tf
from tensorflow import keras

def get_model():
    # Create a simple model.
    inputs = keras.Input(shape=(32,))
    outputs = keras.layers.Dense(1)(inputs)
    model = keras.Model(inputs, outputs)
    model.compile(optimizer="adam", loss="mean_squared_error")
    return model


model = get_model()

# تدريب النموذج
test_input = np.random.random((128, 32))
test_target = np.random.random((128, 1))
model.fit(test_input, test_target)

# حفظ النوذج بعد تدريبه
model.save("my_model")

# اعادة تحميل النموذج
reconstructed_model = keras.models.load_model("my_model")

np.testing.assert_allclose(
    model.predict(test_input), reconstructed_model.predict(test_input)
)
#استكمال أو اعادة تدريب النموذج المدرب
reconstructed_model.fit(test_input, test_target)

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...