برشها را از «پارامها» در یک تانسور با شکل مشخص شده با «شاخصها» جمعآوری کنید.
«شاخصها» یک تانسور عدد صحیح K بعدی است که بهتر است به عنوان یک تانسور (K-1)-بعدی از شاخصها در «پارام» در نظر گرفته شود، که در آن هر عنصر تکهای از «پارامها» را تعریف میکند:
خروجی[\\(i_0, ..., i_{K-2}\\)] = پارامترها[شاخصها[\\(i_0, ..., i_{K-2}\\)]]
در حالی که در tf.gather
«شاخصها» برشها را در بعد «محور» «params» تعریف میکند، در tf.gather_nd
، «شاخصها» برشها را در اولین ابعاد «N» «params» تعریف میکند، جایی که «N = indices.shape» است. [-1]`.
آخرین بعد «شاخص ها» حداکثر می تواند رتبه «پارام ها» باشد:
indices.shape[-1] <= params.rank
آخرین بعد «شاخصها» به عناصر (اگر «indices.shape[-1] == params.rank») یا برشها (اگر «indices.shape[-1] < params.rank») در امتداد «شاخصها» مربوط میشود. شکل[-1]` از «params». تانسور خروجی شکل دارد
indices.shape[:-1] + params.shape[indices.shape[-1]:]
توجه داشته باشید که در CPU، اگر یک نمایه خارج از کران پیدا شود، یک خطا برگردانده می شود. در GPU، اگر یک نمایه خارج از کران پیدا شود، 0 در مقدار خروجی مربوطه ذخیره می شود.
چند نمونه در زیر
نمایه سازی ساده در یک ماتریس:
indices = [[0, 0], [1, 1]]
params = [['a', 'b'], ['c', 'd']]
output = ['a', 'd']
نمایه سازی برش در یک ماتریس: indices = [[1], [0]]
params = [['a', 'b'], ['c', 'd']]
output = [['c', 'd'], ['a', 'b']]
نمایه سازی به یک تانسور 3: indices = [[1]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [[['a1', 'b1'], ['c1', 'd1']]]
indices = [[0, 1], [1, 0]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [['c0', 'd0'], ['a1', 'b1']]
indices = [[0, 0, 1], [1, 0, 1]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = ['b0', 'b1']
نمایه سازی دسته ای در یک ماتریس: indices = [[[0, 0]], [[0, 1]]]
params = [['a', 'b'], ['c', 'd']]
output = [['a'], ['b']]
فهرست بندی دسته ای indices = [[[1]], [[0]]]
params = [['a', 'b'], ['c', 'd']]
output = [[['c', 'd']], [['a', 'b']]]
: a 3-tensor: indices = [[[1]], [[0]]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [[[['a1', 'b1'], ['c1', 'd1']]],
[[['a0', 'b0'], ['c0', 'd0']]]]
indices = [[[0, 1], [1, 0]], [[0, 0], [1, 1]]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [[['c0', 'd0'], ['a1', 'b1']],
[['a0', 'b0'], ['c1', 'd1']]]
indices = [[[0, 0, 1], [1, 0, 1]], [[0, 1, 1], [1, 1, 0]]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [['b0', 'b1'], ['d0', 'c1']]
همچنین tf.gather
و «tf.batch_gather» را ببینید. روش های عمومی
خروجی <T> | asOutput () دسته نمادین یک تانسور را برمیگرداند. |
استاتیک <T، U تعداد را گسترش می دهد> جمع آوری <T> | ایجاد ( دامنه دامنه، پارامترهای عملوند <T>، شاخص های عملوند <U>) روش Factory برای ایجاد کلاسی که عملیات GatherNd جدید را بسته بندی می کند. |
خروجی <T> | خروجی () مقادیر «params» از شاخصهای «شاخصها» با شکل «indices.shape[:-1] + params.shape[indices.shape[-1]:]» جمعآوری شده است. |
روش های ارثی
روش های عمومی
خروجی عمومی <T> asOutput ()
دسته نمادین یک تانسور را برمیگرداند.
ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.
عمومی استاتیک GatherNd <T> ایجاد ( دامنه دامنه، پارامترهای عملوند <T>، شاخص های عملوند <U>)
روش Factory برای ایجاد کلاسی که عملیات GatherNd جدید را بسته بندی می کند.
مولفه های
محدوده | محدوده فعلی |
---|---|
پارامترها | تانسوری که از آن مقادیر جمع آوری می شود. |
شاخص ها | تانسور شاخص |
برمی گرداند
- یک نمونه جدید از GatherNd
خروجی عمومی <T> خروجی ()
مقادیر «params» از شاخصهای «شاخصها» با شکل «indices.shape[:-1] + params.shape[indices.shape[-1]:]» جمعآوری شده است.