TensorScatterUpdate

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

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

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

אם 'מדדים' מכילים כפילויות, העדכונים שלהם מצטברים (מסוכמים).

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

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

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

הצורה הפשוטה ביותר של פיזור היא הכנסת אלמנטים בודדים בטנזור לפי אינדקס. לדוגמה, נניח שאנו רוצים להכניס 4 אלמנטים מפוזרים בטנזור דרגה 1 עם 8 אלמנטים.

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

>>> מדדים = tf.constant([[4], [3], [1], [7]]) >>> עדכונים = tf.constant([9, 10, 11, 12]) >>> טנסור = tf.ones([8], dtype=tf.int32) >>> print(tf.tensor_scatter_nd_update(tensor, indices, updates)) tf.Tensor([ 1 11 1 10 9 1 1 12], shape=(8 ,), dtype=int32)

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

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

>>> מדדים = tf.constant([[0], [2]]) >>> עדכונים = 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) >>> print (tf.tensor_scatter_nd_update(tensor, indices, updates).numpy()) [[[5 5 5 5] [6 6 6 6] [7 7 7 7] [8 8 8 8]] [[1 1 1 1] [1 1 1 1] [1 1 1 1] [1 1 1 1]] [[5 5 5 5] [6 6 6 6] [7 7 7 7] [8 8 8 8]] [[1 1 1 1] [1 1 1 1] [1 1 1 1] [1 1 1 1]]]

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

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

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

שיטות בירושה

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

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

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

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

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

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

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

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

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