מוריד `עדכונים` דלילים מטנזור קיים לפי `מדדים`.
פעולה זו יוצרת טנזור חדש על ידי הפחתת `עדכונים` דלילים מהעובר ב`טנזור`. פעולה זו דומה מאוד ל-`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, אם נמצא אינדקס מחוץ לתחום, מתעלמים מהאינדקס.
קבועים
חוּט | OP_NAME | השם של המבצע הזה, כפי שידוע על ידי מנוע הליבה של TensorFlow |
שיטות ציבוריות
פלט <T> | asOutput () מחזירה את הידית הסמלית של הטנזור. |
סטטי <T מרחיב את TType > TensorScatterNdSub <T> | |
פלט <T> | פלט () טנזור חדש מועתק מטנזור ועדכונים מופחתים לפי המדדים. |
שיטות בירושה
קבועים
מחרוזת סופית סטטית ציבורית OP_NAME
השם של המבצע הזה, כפי שידוע על ידי מנוע הליבה של TensorFlow
שיטות ציבוריות
פלט ציבורי <T> asOutput ()
מחזירה את הידית הסמלית של הטנזור.
כניסות לפעולות TensorFlow הן יציאות של פעולת TensorFlow אחרת. שיטה זו משמשת להשגת ידית סמלית המייצגת את חישוב הקלט.
ציבורי סטטי TensorScatterNdSub <T> create ( scope scope, Operand <T> tensor, Operand <? מרחיב את המדדים של Tnumber >, עדכוני Operand <T>)
שיטת מפעל ליצירת מחלקה העוטפת פעולת TensorScatterNdSub חדשה.
פרמטרים
תְחוּם | ההיקף הנוכחי |
---|---|
מוֹתֵחַ | טנסור להעתקה/עדכון. |
מדדים | טנסור אינדקס. |
עדכונים | עדכונים לפיזור בפלט. |
מחזיר
- מופע חדש של TensorScatterNdSub