تحذير: تم إهمال واجهة برمجة التطبيقات هذه وستتم إزالتها في إصدار مستقبلي من TensorFlow بعد استقرار الاستبدال .

ScatterNd

فئة العام النهائي ScatterNd

ينثر "التحديثات" في موتر "الشكل" وفقًا لـ "المؤشرات".

نثر "التحديثات" المتفرقة وفقًا للقيم الفردية في "الفهارس" المحددة. يقوم هذا المرجع بإرجاع موتر الإخراج بـ "الشكل" الذي تحدده. هذا المرجع هو معكوس عامل التشغيل tf.gather_nd الذي يستخرج القيم أو الشرائح من موتر معين.

تشبه هذه العملية tf.tensor_scatter_nd_add ، فيما عدا أن الموتر غير مهيأ للصفر. استدعاء tf.scatter_nd(indices, updates, shape) مطابق لاستدعاء tf.tensor_scatter_nd_add (tf.zeros (شكل ، تحديثات ، نوع) ، مؤشرات ، تحديثات) "

إذا كانت "الفهارس" تحتوي على تكرارات ، يتم تجميع "التحديثات" المرتبطة (مجمعة) في موتر الإخراج.

تحذير : بالنسبة لأنواع بيانات الفاصلة العائمة ، قد يكون الإخراج غير محدد. هذا لأن الترتيب الذي يتم تطبيق التحديثات به غير محدد وعندما يتم إضافة أرقام الفاصلة العائمة في أوامر مختلفة ، يمكن أن يكون خطأ التقريب العددي الناتج مختلفًا قليلاً. ومع ذلك ، سيكون الناتج حتميًا إذا تم تمكين حتمية المرجع عبر tf.config.experimental.enable_op_determinism .

"الفهارس" هو موتر عدد صحيح يحتوي على مؤشرات في موتر الإخراج. يمكن أن يكون البعد الأخير "للمؤشرات" على الأكثر مرتبة "الشكل":

indices.shape [-1] <= shape.rank

البعد الأخير لـ "الفهارس" يتوافق مع فهارس العناصر (إذا كان `الفهارس.شكل [-1] = الشكل.رنك`) أو الشرائح (إذا كان` الفهارس.شكل [-1] <شكل.رنك`) على طول مؤشرات الأبعاد ` . شكل [-1] `من` الشكل`.

"التحديثات" موتر ذو شكل:

شكل مؤشرات [: - 1] + شكل [مؤشرات. شكل [-1]:]

أبسط شكل من أشكال التشتت هو إدراج العناصر الفردية في موتر حسب الفهرس. ضع في اعتبارك مثالًا حيث تريد إدراج 4 عناصر مبعثرة في موتر من الرتبة 1 مع 8 عناصر.

في Python ، ستبدو عملية التبديد هذه على النحو التالي:

indices = tf.constant([[4], [3], [1], [7]])
     updates = tf.constant([9, 10, 11, 12])
     shape = tf.constant([8])
     scatter = tf.scatter_nd(indices, updates, shape)
     print(scatter)
 
سيبدو الموتر الناتج كما يلي:

[0 ، 11 ، 0 ، 10 ، 9 ، 0 ، 0 ، 12]

يمكنك أيضًا إدراج شرائح كاملة من موتر ذي رتبة أعلى دفعة واحدة. على سبيل المثال ، يمكنك إدراج شريحتين في البعد الأول من موتر الرتبة 3 بمصفوفتين من القيم الجديدة.

في Python ، ستبدو عملية التبديد هذه على النحو التالي:

indices = tf.constant([[1], [3]])
     updates = tf.constant([[[5, 5, 5, 5], [6, 6, 6, 6],
                             [7, 7, 7, 7], [8, 8, 8, 8]],
                            [[5, 5, 5, 5], [6, 6, 6, 6],
                             [7, 7, 7, 7], [8, 8, 8, 8]]])
     shape = tf.constant([4, 4, 4])
     scatter = tf.scatter_nd(indices, updates, shape)
     print(scatter)
 
سيبدو الموتر الناتج كما يلي:

[[0 ، 0 ، 0 ، 0] ، [0 ، 0 ، 0 ، 0] ، [0 ، 0 ، 0 ، 0] ، [0 ، 0 ، 0 ، 0]] ، [[5 ، 5 ، 5 ، 5] ، [6 ، 6 ، 6 ، 6] ، [7 ، 7 ، 7 ، 7] ، [8 ، 8 ، 8 ، 8]] ، [0 ، 0 ، 0 ، 0] ، [0 ، 0 ، 0 ، 0] ، [0 ، 0 ، 0 ، 0] ، [0 ، 0 ، 0 ، 0]] ، [[5 ، 5 ، 5 ، 5] ، [6 ، 6 ، 6 ، 6] ، [7 ، 7 ، 7 ، 7] ، [8 ، 8 ، 8 ، 8]]

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

الطرق العامة

الإخراج <U>
asOutput ()
إرجاع المقبض الرمزي للموتر.
ثابت <U ، T يمتد رقم> ScatterNd <U>
إنشاء ( نطاق النطاق ، ومؤشرات عامل التشغيل <T> ، وتحديثات المعامل <U> ، وشكل عامل التشغيل <T>)
طريقة المصنع لإنشاء فئة التفاف لعملية ScatterNd جديدة.
الإخراج <U>
الإخراج ()
موتر جديد بالشكل المحدد والتحديثات المطبقة وفقًا للمؤشرات.

الطرق الموروثة

الطرق العامة

الإخراج العام <U> كإخراج ()

إرجاع المقبض الرمزي للموتر.

المدخلات لعمليات TensorFlow هي مخرجات عملية TensorFlow أخرى. تستخدم هذه الطريقة للحصول على مقبض رمزي يمثل حساب المدخلات.

عمومي ثابت ScatterNd <U> إنشاء ( نطاق النطاق ، مؤشرات عامل التشغيل <T> ، تحديثات عامل التشغيل <U> ، شكل عامل التشغيل <T>)

طريقة المصنع لإنشاء فئة التفاف لعملية ScatterNd جديدة.

المعلمات
مجال النطاق الحالي
المؤشرات موتر المؤشرات.
التحديثات القيم للتشتت في موتر الإخراج.
شكل 1-د. شكل موتر الإخراج.
عائدات
  • مثيل جديد لـ ScatterNd

الإخراج العام <U> الإخراج ()

موتر جديد بالشكل المحدد والتحديثات المطبقة وفقًا للمؤشرات.