عامر ابراهيم نشر 16 سبتمبر 2021 أرسل تقرير نشر 16 سبتمبر 2021 كيف نقوم بالتحويل من التنسيق NHWC و NCHW؟ 1 اقتباس
1 Ali Haidar Ahmad نشر 16 سبتمبر 2021 أرسل تقرير نشر 16 سبتمبر 2021 أولاً لنشرح الرموز: N هو عدد الصور ضمن الحزمة (batch). H هو ارتفاع كل صورة. W: عرضها. C عدد القنوات اللونية للصورة. للتحويل من (N, H, W, C) NHWC ل (N, C, H, W) NCHW: يجب عليك التبديل بين الأبعاد وهنا سنستخدم الدالة tf.transpose مع استخدام الوسيطة perm للقيام بعملية التبديل: perm[0] = 0 أي أن البعد الأول من الخرج (البعد الأول للصورة الجديدة) سيكون نفسه في الصورة القديمة. perm[1] = 3 أي أن البعد الأول من الخرج سيكون نفسه البعد الرابع من الصورة القديمة. ونفس الأمر لبقية الأبعاد: perm[2] = 1 perm[3] = 2 الآن مثال لتوضيخ الفكرة حيث قمنا بتعريف حزمة من الصور ثم حولنا تنسيقها: import tensorflow as tf nhwc = tf.placeholder(tf.float32, [None, 50, 150, 3]) # حزمة الإدخال nchw = tf.transpose(nhwc, perm =[0, 3, 1, 2]) print(nchw.get_shape()) # the shape of out is [None, 3, 50, 150] الخرج الآن للتحويل العكسي أي من NCHW ل NHWC نستخدم نفس الفكرة السابقة. مثال: nchw = tf.placeholder(tf.float32, [None, 3, 50, 150]) nhwc = tf.transpose(images_nchw, [0, 2, 3, 1]) print(nhwc.get_shape()) # the shape of out is [None, 50, 150, 3] اقتباس
1 Ahmed Sharshar نشر 16 سبتمبر 2021 أرسل تقرير نشر 16 سبتمبر 2021 بالاضافة للطريقة التي أوضحها علي، فيمكنك أن تقوم بالتحويل ببساطة بالكود التالي: from keras import backend backend.set_image_data_format('channels_last') أو كذلك يمكنك استخدام الكود التالي للتحويل الي NHWC أو NCHW: out_nchw = conv2d(image_nchw, filters, 'NCHW') out_nhwc = conv2d(image_nhwc, perm(filters), 'NHWC') assert np.allclose(out_nhwc == np.transpose(out_nchw, (0,2,3,1))) اقتباس
السؤال
عامر ابراهيم
كيف نقوم بالتحويل من التنسيق NHWC و NCHW؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.