اجمع الشرائح من "المعلمات" في موتر ذي شكل محدد بواسطة "المؤشرات".
"المؤشرات" هي موتر عدد صحيح ذي أبعاد K، ويُعتقد أنه موتر ذو أبعاد (K-1) للمؤشرات في "المعلمات"، حيث يحدد كل عنصر شريحة من "المعاملات":
الإخراج [\\(i_0, ..., i_{K-2}\\)] = المعلمات[المؤشرات[\\(i_0, ..., i_{K-2}\\)]]
بينما في tf.gather
`indices` تحدد الشرائح في بُعد `المحور` من `params`، في tf.gather_nd
`indices` تحدد الشرائح في أبعاد `N` الأولى من `params`، حيث `N = indices.shape [-1]`.
البعد الأخير لـ "المؤشرات" يمكن أن يكون على الأكثر رتبة "params":
indices.shape[-1] <= params.rank
يتوافق البعد الأخير من "المؤشرات" مع العناصر (إذا كانت "indices.shape[-1] == params.rank") أو الشرائح (إذا كانت "indices.shape[-1] <params.rank") على طول البعد "indices". الشكل [-1]` من `المعلمات`. موتر الإخراج له شكل
indices.shape[:-1] + params.shape[indices.shape[-1]:]
لاحظ أنه على وحدة المعالجة المركزية، إذا تم العثور على فهرس خارج النطاق، فسيتم إرجاع خطأ. في وحدة معالجة الرسومات، إذا تم العثور على فهرس خارج النطاق، فسيتم تخزين 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']]
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']]]
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> | كإخراج () إرجاع المقبض الرمزي للموتر. |
ثابت <T، U يمتد الرقم> اجمع <T> | |
الإخراج <T> | الإخراج () تم جمع القيم من "المعلمات" من الفهارس المقدمة بواسطة "المؤشرات"، بالشكل `indices.shape[:-1] + params.shape[indices.shape[-1]:]`. |
الطرق الموروثة
الأساليب العامة
الإخراج العام <T> كإخراج ()
إرجاع المقبض الرمزي للموتر.
المدخلات إلى عمليات TensorFlow هي مخرجات عملية TensorFlow أخرى. يتم استخدام هذه الطريقة للحصول على مقبض رمزي يمثل حساب الإدخال.
إنشاء GatherNd <T> ثابت عام (نطاق النطاق ، معلمات المعامل <T>، مؤشرات المعامل <U>)
طريقة المصنع لإنشاء فئة تغلف عملية GatherNd جديدة.
حدود
نِطَاق | النطاق الحالي |
---|---|
المعلمات | الموتر الذي يتم جمع القيم منه. |
المؤشرات | مؤشر الموتر. |
المرتجعات
- مثيل جديد لـ GatherNd
الإخراج العام <T> الإخراج ()
تم جمع القيم من "المعلمات" من الفهارس المقدمة بواسطة "المؤشرات"، بالشكل `indices.shape[:-1] + params.shape[indices.shape[-1]:]`.