TensorScatterSub

כיתת גמר ציבורית TensorScatterSub

מוריד `עדכונים` דלילים מטנזור קיים לפי `מדדים`.

פעולה זו יוצרת טנזור חדש על ידי הפחתת `עדכונים` דלילים מהעובר ב`טנזור`. פעולה זו דומה מאוד ל-`tf.scatter_nd_sub`, אלא שהעדכונים מופחתים מטנזור קיים (בניגוד למשתנה). אם לא ניתן לעשות שימוש חוזר בזיכרון של הטנזור הקיים, עותק מבוצע ומתעדכן.

`מדדים` הוא טנסור שלם המכיל מדדים לתוך טנזור חדש של צורה `צורה`. הממד האחרון של 'מדדים' יכול להיות לכל היותר דרגת 'צורה':

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

הממד האחרון של `מדדים` מתאים למדדים לתוך אלמנטים (אם `indices.shape[-1] = shape.rank`) או לפרוסות (אם `indices.shape[-1] < shape.rank`) לאורך הממד `מדדים` .shape[-1]` של `shape`. 'עדכונים' הוא טנסור עם צורה

indices.shape[:-1] + shape[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 עם שתי מטריצות של ערכים חדשים.

ב-Python, פעולת הוספה של פיזור זו תיראה כך:

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]] ]

שימו לב שב-CPU, אם נמצא אינדקס מחוץ לתחום, מוחזרת שגיאה. ב-GPU, אם נמצא אינדקס מחוץ לתחום, מתעלמים מהאינדקס.

שיטות ציבוריות

פלט <T>
asOutput ()
מחזירה את הידית הסמלית של טנזור.
סטטי <T, U מרחיב מספר> TensorScatterSub <T>
ליצור ( היקף היקף, טנסור Operand <T>, מדדי Operand <U>, עדכוני Operand <T>)
שיטת מפעל ליצירת מחלקה העוטפת פעולת TensorScatterSub חדשה.
פלט <T>
פלט ()
טנזור חדש מועתק מטנזור ועדכונים מופחתים לפי המדדים.

שיטות בירושה

שיטות ציבוריות

פלט ציבורי <T> asOutput ()

מחזירה את הידית הסמלית של טנזור.

כניסות לפעולות TensorFlow הן יציאות של פעולת TensorFlow אחרת. שיטה זו משמשת להשגת ידית סמלית המייצגת את חישוב הקלט.

סטטי ציבורי של TensorScatterSub <T> ליצור (היקף היקף , טנסור Operand <T>, מדדי Operand <U>, עדכוני Operand <T>)

שיטת מפעל ליצירת מחלקה העוטפת פעולת TensorScatterSub חדשה.

פרמטרים
תְחוּם ההיקף הנוכחי
מוֹתֵחַ טנסור להעתקה/עדכון.
מדדים טנזור אינדקס.
עדכונים עדכונים לפיזור בפלט.
החזרות
  • מופע חדש של TensorScatterSub

פלט ציבורי <T> פלט ()

טנזור חדש מועתק מטנזור ועדכונים מופחתים לפי המדדים.