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

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 עם שתי מטריצות של ערכים חדשים.

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

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>
ליצור ( היקף היקף, האופרנד <T> מותח, האופרנד <U> מדדים, האופרנד <T> עדכונים)
שיטת מפעל ליצירת מחלקה העוטפת פעולת TensorScatterSub חדשה.
פלט <T>
פלט ()
טנסור חדש מועתק מטנזור ועדכונים מופחתים לפי המדדים.

שיטות בירושה

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

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

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

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

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

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

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

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

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