TensorScatterSub

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

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

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

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

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

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

indices.shape[:-1] + شكل[indices.shape[-1]:]

إن أبسط أشكال Tensor_scatter_sub هو طرح العناصر الفردية من الموتر بواسطة الفهرس. على سبيل المثال، لنفترض أننا نريد إدراج 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_sub(tensor, indices, updates)
     print(updated)
 
وسيبدو الموتر الناتج كما يلي:

[1، -10، 1، -9، -8، 1، 1، -11]

يمكننا أيضًا إدراج شرائح كاملة من موتر ذو رتبة أعلى مرة واحدة. على سبيل المثال، إذا أردنا إدراج شريحتين في البعد الأول لموتر من الرتبة 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_sub(tensor, indices, updates)
     print(updated)
 
وسيبدو الموتر الناتج كما يلي:

[[[-4، -4، -4، -4]، [-5، -5، -5، -5]، [-6، -6، -6، -6]، [-7، -7 , -7, -7]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]] ، [[-4، -4، -4، -4]، [-5، -5، -5، -5]، [-6، -6، -6، -6]، [-7، -7 , -7, -7]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]] ]

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

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

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

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

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

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

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

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

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

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

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

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

موتر جديد منسوخ من الموتر وطرح التحديثات حسب المؤشرات.