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

السؤال

Recommended Posts

  • 1
نشر

أولاً لنشرح الرموز: 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
نشر

بالاضافة للطريقة التي أوضحها علي، فيمكنك أن تقوم بالتحويل ببساطة بالكود التالي:

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)))

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...