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

TensorScatterSub

الجمهور TensorScatterSub الدرجة النهائية

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

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

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

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

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

شكل مؤشرات [: - 1] + شكل [مؤشرات. شكل [-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>
asOutput ()
إرجاع المقبض الرمزي للموتر.
ثابت <T، U يمتد الرقم> TensorScatterSub <T>
إنشاء ( نطاق نطاق، المعامل <T> موتر، المعامل <U> المؤشرات، المعامل <T> التحديثات)
طريقة المصنع لإنشاء فئة تغلف عملية TensorScatterSub جديدة.
الانتاج <T>
الانتاج ()
موتر جديد منسوخ من موتر وتحديثات مطروح وفقاً للمؤشرات.

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

الطرق العامة

العام الناتج <T> asOutput ()

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

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

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

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

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

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

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