TensorScatterAdd

الطبقة النهائية العامة TensorScatterAdd

يضيف "تحديثات" متفرقة إلى موتر موجود وفقًا لـ "المؤشرات".

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

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

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

البعد الأخير من "المؤشرات" يتوافق مع المؤشرات في العناصر (إذا كانت "indices.shape[-1] = Tensor.shape.rank") أو شرائح (إذا كانت "indices.shape[-1] <tensor.shape.rank") على طول البعد `indices.shape[-1]` من `tensor.shape`. "التحديثات" عبارة عن موتر ذو شكل

indices.shape[:-1] + Tensor.shape[indices.shape[-1]:]

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

في بايثون، ستبدو عملية الإضافة المبعثرة كما يلي:

indices = tf.constant([[4], [3], [1], [7]])
     updates = tf.constant([9, 10, 11, 12])
     tensor = tf.ones([8], dtype=tf.int32)
     updated = tf.tensor_scatter_nd_add(tensor, indices, updates)
     print(updated)
 
وسيبدو الموتر الناتج كما يلي:

[1، 12، 1، 11، 10، 1، 1، 13]

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

في بايثون، ستبدو عملية الإضافة المبعثرة كما يلي:

indices = tf.constant([[0], [2]])
     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]]])
     tensor = tf.ones([4, 4, 4],dtype=tf.int32)
     updated = tf.tensor_scatter_nd_add(tensor, indices, updates)
     print(updated)
 
وسيبدو الموتر الناتج كما يلي:

[[[6، 6، 6، 6]، [7، 7، 7، 7]، [8، 8، 8، 8]، [9، 9، 9، 9]]، [[1، 1، 1] ، 1]، [1، 1، 1، 1]، [1، 1، 1، 1]، [1، 1، 1، 1]]، [[6، 6، 6، 6]، [7، 7] , 7, 7], [8, 8, 8, 8], [9, 9, 9, 9]], [[1, 1, 1, 1], [1, 1, 1, 1], [1] , 1, 1, 1], [1, 1, 1, 1]]]

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

الأساليب العامة

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

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

الأساليب العامة

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

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

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

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

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

حدود
نِطَاق النطاق الحالي
الموتر الموتر للنسخ/التحديث.
المؤشرات مؤشر الموتر.
التحديثات التحديثات لتنتشر في الإخراج.
عائدات
  • مثيل جديد لـ TensorScatterAdd

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

Tensor جديد منسوخ من Tensor ويتم إضافة التحديثات حسب المؤشرات.