البرمجة

تحويل مجموعة بيانات TensorFlow إلى دفعات جاهزة للتدريب

في عملية تدريب نموذج TensorFlow على مجموعة بيانات الصور الخاصة بك، يظهر أنك قد قمت بتحميل الصور والتسميات الخاصة بها باستخدام TensorFlow وقد تقف أمامك الآن تحدي تقسيم هذه البيانات إلى دفعات (batches) للتدريب بشكل فعال. سأقدم لك إرشادات تفصيلية حول كيفية تحقيق ذلك باستخدام الأكواد التي قدمتها والتي يبدو أنك قد حاولت استخدامها.

أولاً، تحتاج إلى دمج الكود الذي قدمته مع الأكواد الخاصة بتشكيل الدفعات وقراءة البيانات من الطوابير (queues). الأكواد الأساسية التي يجب دمجها تظهر في الأمثلة أدناه:

أولاً، تقوم بقراءة البيانات من الملفات باستخدام الطابور (queue):

python
def read_my_file_format(filename_queue): reader = tf.TextLineReader() key, value = reader.read(filename_queue) record_defaults = [[""], [1]] col1, col2 = tf.decode_csv(value, record_defaults=record_defaults) features = tf.pack([col2]) return features, col2 def input_pipeline(filenames, batch_size, num_epochs=None): filename_queue = tf.train.string_input_producer( filenames, num_epochs=num_epochs, shuffle=True) example, label = read_my_file_format(filename_queue) min_after_dequeue = 10000 capacity = min_after_dequeue + 3 * batch_size example_batch, label_batch = tf.train.shuffle_batch( [example, label], batch_size=batch_size, capacity=capacity, min_after_dequeue=min_after_dequeue) return example_batch, label_batch

الآن، تقوم بتحديد متغيرات الدفعات والتفاعل مع TensorFlow Session:

python
# تحديد حجم الدفعات وعدد الحلقات batch_size = 32 num_epochs = 10 # تحديد قائمة الملفات files = tf.train.match_filenames_once('*.JPG') # إنشاء الدفعات example_batch, label_batch = input_pipeline(files, batch_size, num_epochs) # تهيئة البيئة init = tf.global_variables_initializer() # بدء التدريب with tf.Session() as sess: sess.run(init) # تهيئة الطابور coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(coord=coord) try: # الحلقة التدريبية for epoch in range(num_epochs): total_batches = len(files) // batch_size for i in range(total_batches): # استخراج الدفعة batch_features, batch_labels = sess.run([example_batch, label_batch]) # قم بتدريب النموذج باستخدام الدفعة المستخرجة # قم بتنفيذ العمليات اللازمة هنا (حسب النموذج الخاص بك) except tf.errors.OutOfRangeError: print("تم الانتهاء من الحقبة.") finally: # إيقاف الطابور coord.request_stop() coord.join(threads)

تحتاج إلى تخصيص الجزء الأخير من الشيفرة لتناسب نموذج التدريب الخاص بك. استخدم batch_features و batch_labels كبيانات الدفعة في عملية التدريب الخاصة بك داخل الحلقة التدريبية. يمكنك استبدال الشيفرة في الجزء “قم بتدريب النموذج” بالشيفرة الخاصة بتحديث النموذج وحساب الخسائر وما إلى ذلك، حسب النموذج الخاص بك.

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

في عملية تدريب نموذج TensorFlow على مجموعة بيانات خاصة، يُعتبر قراءة البيانات وتجهيزها بشكل صحيح أمرًا حاسمًا لضمان فعالية وفعالية التدريب. في هذا السياق، يظهر أن لديك تحديات في تحميل البيانات وتحويلها إلى دُفعات قابلة للتدريب باستخدام TensorFlow.

المقال الخاص بقراءة البيانات في TensorFlow الذي قدمته يحتوي على عدة خطوات مهمة، ولكن الجزء الذي تحتاج إلى الانتباه إليه هو كيفية تحويل مجموعة الأمثلة إلى دُفعات جاهزة للتدريب. في المثال الذي وفرته، يمكنك استخدام دالة tf.train.shuffle_batch لتحقيق ذلك.

قد تقوم بتكامل الشيفرة التي قدمتها مع الكود الذي لديك بالفعل. يُفضل فهم الخطوات الأساسية التي قمت بها حتى الآن:

  1. قائمة بأسماء الملفات (files).
  2. قائمة الاسماء (filename_queue) واستخدام القارئ (reader) لقراءة الملفات.
  3. استخدام فكّر (decoder) لتحويل السجلات المقروءة إلى متغيرات قابلة للاستخدام (features و col2).
  4. إعداد طابور الأمثلة (example queue).

بعد هذه الخطوات، يمكنك تكامل الكود التالي الذي يستخدم دالة tf.train.shuffle_batch لتحويل طابور الأمثلة إلى دُفعات جاهزة للتدريب:

python
min_after_dequeue = 10000 capacity = min_after_dequeue + 3 * batch_size example_batch, label_batch = tf.train.shuffle_batch( [features, col2], batch_size=batch_size, capacity=capacity, min_after_dequeue=min_after_dequeue)

يُنصح بتضمين هذا الكود في دالة input_pipeline التي تم وفرتها في المقال الذي قمت بنشره. وبذلك، يمكنك استخدام example_batch و label_batch كإدخال لنموذجك أثناء عملية التدريب.

يمكنك استخدام دورة التدريب بمثابة إطار لتحديد عدد الدورات وحجم الدُفعة. يُفضل فحص المتغير total_batch لضبط عدد الدورات والتحقق من أن كل دُفعة تحتوي على الحجم المطلوب.

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