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

كيف نحصل على أبعاد ال tensor وما الفرق بين static shape و dynamic shape في تنسرفلو Tensorflow

عامر ابراهيم

السؤال

أحاول الحصول على أبعاد ال tensor:

x = tf.get_variable("x", [100])
# عندما أقوم بطباعة أبعادها
print( tf.shape(x) )
# يعطيني خرجاً
# Tensor("Shape:0", shape=(1,), dtype=int32)

لكن الخرج المتوقع هو (100) وليس كما أعطاني في الخرج لماذا؟
 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

حسب التوثيق "في TensorFlow ، يكون للتنسر shape ستاتيكي (مستدل) وشكل ديناميكي (حقيقي). يمكن معرفة ال shape الستاتيكي باستخدام الدالة  tf.Tensor.get_shape: يُستدل على هذا ال shape من العمليات التي تم استخدامها لإنشاء هذا التنسر، وقد يكون مكتملًا جزئياً. إذا لم يتم تحديد ال shape الستاتيكي بالكامل، فيمكن تحديد الشكل الديناميكي لـ Tensor t من خلال tf.shape (t)." حسناً ربما لم تفهم شيئ. تابع معي..
في بعض الأحيان ، يعتمد شكل التنسر على قيمة يتم حسابها في زمن التنفيذ. لنأخذ المثال التالي ، يحيث x هو متجه  tf.placeholder بأربعة عناصر:

x = tf.placeholder(tf.int32, shape=[4])
x.get_shape()
# (4,)

خرج x.get_shape  يمثل ال shape الستاتيكي لـ x ، وتعني (4 ،) أنه متجه بطول 4. الآن دعنا نطبق العملية التالية على x:

y, _ = tf.unique(x)
y.get_shape()
# (?,)

(؟ ،) تعني أن y متجه بطول غير معروف. لماذا هو مجهول؟ تُرجع tf.unique (x) القيم الفريدة من x ، وقيم x غير معروفة لأنها tf.placeholder ، لذلك لا تحتوي على قيمة حتى تقوم بإدخالها. الآن في حالة قمت بإدخال قيمتين مختلفتين:

sess = tf.Session()
sess.run(y, feed_dict={x: [0, 1, 2, 3]}).shape
# (4,)
sess.run(y, feed_dict={x: [0, 0, 0, 0]}).shape
# (1,)

 إذاً الموتر يمكن أن يكون له شكل ستاتيكي وديناميكي مختلفين. دائماً ما يكون الشكل الديناميكي محدداً تماماً (ليس لها أبعاد وهذا مايشار له ب "؟") لكن الشكل الستاتيكي يمكن أن يكون أقل تحديداً. وهذا ما يسمح لـ TensorFlow بدعم عمليات مثل tf.unique  و tf.dynamic_partition، والتي يمكن أن تحتوي على مخرجات متغيرة الحجم ، وتستخدم في التطبيقات المتقدمة.
الآن اعتقد أن كل شيء واضح والأبعاد التي تبحث عنها أنت هي الأبعاد الستاتيكية لذا استخدم الدالة get_shape

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...