TensorScatterAdd

کلاس نهایی عمومی TensorScatterAdd

«به‌روزرسانی‌های» پراکنده را به یک تانسور موجود با توجه به «شاخص‌ها» اضافه می‌کند.

این عملیات با افزودن «به‌روزرسانی‌های» پراکنده به «تانسور»، یک تانسور جدید ایجاد می‌کند. این عملیات بسیار شبیه به «tf.scatter_nd_add» است، با این تفاوت که به‌روزرسانی‌ها به یک تانسور موجود (برخلاف یک متغیر) اضافه می‌شوند. اگر حافظه تانسور موجود قابل استفاده مجدد نباشد، یک کپی ساخته شده و به روز می شود.

«شاخص‌ها» یک تانسور عدد صحیح است که شامل شاخص‌هایی در یک تانسور جدید به شکل «tensor.shape» است. آخرین بعد «شاخص‌ها» حداکثر می‌تواند رتبه «شکل تنسور» باشد:

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

آخرین بعد «شاخص‌ها» مربوط به شاخص‌ها در عناصر (اگر «indices.shape[-1] = tensor.shape.rank») یا برش‌ها (اگر «indices.shape[-1] < tensor.shape.rank») در امتداد بعد «شاخص‌های شکل[-1]» «شکل تنسور». "به روز رسانی" یک تانسور با شکل است

indices.shape[:-1] + tensor.shape[indices.shape[-1]:]

ساده ترین شکل tensor_scatter_add اضافه کردن عناصر جداگانه به یک تانسور با شاخص است. به عنوان مثال، فرض کنید می خواهیم 4 عنصر را با 8 عنصر در یک تانسور رتبه-1 اضافه کنیم.

در پایتون، این عملیات افزودن پراکنده به این صورت خواهد بود:

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_add(tensor, indices, updates)
     print(updated)
 
تانسور حاصل به این صورت خواهد بود:

[1، 12، 1، 11، 10، 1، 1، 13]

همچنین می‌توانیم تمام برش‌های یک تانسور رتبه بالاتر را به یکباره وارد کنیم. به عنوان مثال، اگر بخواهیم دو برش را در بعد اول یک تانسور رتبه-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_add(tensor, indices, updates)
     print(updated)
 
تانسور حاصل به این صورت خواهد بود:

[[[6، 6، 6، 6]، [7، 7، 7، 7]، [8، 8، 8، 8]، [9، 9، 9، 9]]، [[1، 1، 1 ، 1]، [1، 1، 1، 1]، [1، 1، 1، 1]، [1، 1، 1، 1]]، [[6، 6، 6، 6]، [7، 7 ، 7، 7]، [8، 8، 8، 8]، [9، 9، 9، 9]]، [[1، 1، 1، 1]، [1، 1، 1، 1]، [1 , 1, 1, 1], [1, 1, 1, 1]]]

توجه داشته باشید که در CPU، اگر یک نمایه خارج از کران پیدا شود، یک خطا برگردانده می شود. در GPU، اگر یک نمایه خارج از کران پیدا شود، شاخص نادیده گرفته می شود.

روش های عمومی

خروجی <T>
asOutput ()
دسته نمادین یک تانسور را برمی‌گرداند.
ایستا <T، U تعداد را گسترش می دهد> TensorScatterAdd <T>
ایجاد ( دامنه دامنه ، تانسور عملوند <T>، شاخص های عملوند <U>، به روز رسانی های عملوند <T>)
روش Factory برای ایجاد کلاسی که یک عملیات TensorScatterAdd جدید را بسته بندی می کند.
خروجی <T>
خروجی ()
یک تانسور جدید کپی شده از تانسور و به‌روزرسانی‌هایی که بر اساس شاخص‌ها اضافه شده است.

روش های ارثی

روش های عمومی

خروجی عمومی <T> asOutput ()

دسته نمادین یک تانسور را برمی‌گرداند.

ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.

عمومی Static TensorScatterAdd <T> create ( Scope scope, Operand <T> tensor, Operand <U> indes, Operand <T> updates)

روش Factory برای ایجاد کلاسی که یک عملیات TensorScatterAdd جدید را بسته بندی می کند.

مولفه های
محدوده محدوده فعلی
تانسور تانسور برای کپی/به روز رسانی
شاخص ها تانسور شاخص
به روز رسانی ها به روز رسانی برای پراکندگی در خروجی.
برمی گرداند
  • یک نمونه جدید از TensorScatterAdd

خروجی عمومی <T> خروجی ()

یک تانسور جدید کپی شده از تانسور و به‌روزرسانی‌هایی که بر اساس شاخص‌ها اضافه شده است.