إرجاع موتر مصفوفة مجمعة بقيم قطرية مجمعة جديدة.
بالنظر إلى "الإدخال" و"القطري"، تُرجع هذه العملية موترًا بنفس الشكل والقيم مثل "الإدخال"، باستثناء الأقطار المحددة للمصفوفات الأعمق. سيتم استبدالها بالقيم الموجودة في "قطري".
`الإدخال` له أبعاد `r+1` `[I, J, ..., L, M, N]`. عندما يكون `k` عدديًا أو `k[0] == k[1]`، فإن `القطري` له `r` أبعاد `[I, J, ..., L, max_diag_len]`. بخلاف ذلك، يكون له أبعاد `r+1` `[I, J, ..., L, num_diags, max_diag_len]`. `num_diags` هو عدد الأقطار، `num_diags = k[1] - k[0] + 1`. `max_diag_len` هو أطول قطري في النطاق `[k[0], k[1]]`, `max_diag_len = min(M + min(k[1], 0), N + min(-k[0] ، 0))`
الناتج عبارة عن موتر من الرتبة `k+1` بأبعاد `[I, J, ..., L, M, N]`. إذا كان `k` عدديًا أو `k[0] == k[1]`:
output[i, j, ..., l, m, n]
= diagonal[i, j, ..., l, n-max(k[1], 0)] ; if n - m == k[1]
input[i, j, ..., l, m, n] ; otherwise
خلاف ذلك، output[i, j, ..., l, m, n]
= diagonal[i, j, ..., l, diag_index, index_in_diag] ; if k[0] <= d <= k[1]
input[i, j, ..., l, m, n] ; otherwise
حيث `d = n - m` و`diag_index = k[1] - d` و`index_in_diag = n - max(d, 0) + offset`."الإزاحة" هي صفر إلا عندما تكون محاذاة القطر إلى اليمين.
offset = max_diag_len - diag_len(d) ; if (`align` in {RIGHT_LEFT, RIGHT_RIGHT}
and `d >= 0`) or
(`align` in {LEFT_RIGHT, RIGHT_RIGHT}
and `d <= 0`)
0 ; otherwise
حيث `diag_len(d) = min(cols - max(d, 0),rows + min(d, 0))`.على سبيل المثال:
# The main diagonal.
input = np.array([[[7, 7, 7, 7], # Input shape: (2, 3, 4)
[7, 7, 7, 7],
[7, 7, 7, 7]],
[[7, 7, 7, 7],
[7, 7, 7, 7],
[7, 7, 7, 7]]])
diagonal = np.array([[1, 2, 3], # Diagonal shape: (2, 3)
[4, 5, 6]])
tf.matrix_set_diag(input, diagonal)
==> [[[1, 7, 7, 7], # Output shape: (2, 3, 4)
[7, 2, 7, 7],
[7, 7, 3, 7]],
[[4, 7, 7, 7],
[7, 5, 7, 7],
[7, 7, 6, 7]]]
# A superdiagonal (per batch).
tf.matrix_set_diag(input, diagonal, k = 1)
==> [[[7, 1, 7, 7], # Output shape: (2, 3, 4)
[7, 7, 2, 7],
[7, 7, 7, 3]],
[[7, 4, 7, 7],
[7, 7, 5, 7],
[7, 7, 7, 6]]]
# A band of diagonals.
diagonals = np.array([[[0, 9, 1], # Diagonal shape: (2, 4, 3)
[6, 5, 8],
[1, 2, 3],
[4, 5, 0]],
[[0, 1, 2],
[5, 6, 4],
[6, 1, 2],
[3, 4, 0]]])
tf.matrix_set_diag(input, diagonals, k = (-1, 2))
==> [[[1, 6, 9, 7], # Output shape: (2, 3, 4)
[4, 2, 5, 1],
[7, 5, 3, 8]],
[[6, 5, 1, 7],
[3, 1, 6, 2],
[7, 4, 2, 4]]]
# LEFT_RIGHT alignment.
diagonals = np.array([[[9, 1, 0], # Diagonal shape: (2, 4, 3)
[6, 5, 8],
[1, 2, 3],
[0, 4, 5]],
[[1, 2, 0],
[5, 6, 4],
[6, 1, 2],
[0, 3, 4]]])
tf.matrix_set_diag(input, diagonals, k = (-1, 2), align="LEFT_RIGHT")
==> [[[1, 6, 9, 7], # Output shape: (2, 3, 4)
[4, 2, 5, 1],
[7, 5, 3, 8]],
[[6, 5, 1, 7],
[3, 1, 6, 2],
[7, 4, 2, 4]]]
فئات متداخلة
فصل | MatrixSetDiagV3.Options | السمات الاختيارية لـ MatrixSetDiagV3 |
الأساليب العامة
ثابت MatrixSetDiagV3.Options | محاذاة (محاذاة السلسلة) |
الإخراج <T> | كإخراج () إرجاع المقبض الرمزي للموتر. |
ثابت <T> MatrixSetDiagV3 <T> | |
الإخراج <T> | الإخراج () رتبة `r+1`، مع `output.shape = input.shape`. |
الطرق الموروثة
الأساليب العامة
محاذاة MatrixSetDiagV3.Options الثابتة العامة (محاذاة السلسلة)
حدود
محاذاة | بعض الأقطار أقصر من `max_diag_len` وتحتاج إلى الحشو. `align` عبارة عن سلسلة تحدد كيفية محاذاة الأقطار الفائقة والأقطار الفرعية، على التوالي. هناك أربع محاذاة محتملة: "RIGHT_LEFT" (افتراضي)، و"LEFT_RIGHT"، و"LEFT_LEFT"، و"RIGHT_RIGHT". يقوم "RIGHT_LEFT" بمحاذاة الأقطار الفائقة إلى اليمين (وسادات الصف اليسرى) والأقطار الفرعية إلى اليسار (وسادات الصف اليمنى). إنه تنسيق التعبئة الذي يستخدمه LAPACK. يستخدم cuSPARSE "LEFT_RIGHT"، وهو المحاذاة المعاكسة. |
---|
الإخراج العام <T> كإخراج ()
إرجاع المقبض الرمزي للموتر.
المدخلات إلى عمليات TensorFlow هي مخرجات عملية TensorFlow أخرى. يتم استخدام هذه الطريقة للحصول على مقبض رمزي يمثل حساب الإدخال.
إنشاء MatrixSetDiagV3 <T> ثابت عام (نطاق النطاق ، إدخال المعامل <T>، المعامل <T> قطري، المعامل <عدد صحيح> k، خيارات... خيارات)
طريقة المصنع لإنشاء فئة تغلف عملية MatrixSetDiagV3 جديدة.
حدود
نِطَاق | النطاق الحالي |
---|---|
مدخل | الرتبة `r+1`، حيث `r >= 1`. |
قطري | رتب `r` عندما يكون `k` عددًا صحيحًا أو `k[0] == k[1]`. وبخلاف ذلك، فقد حصلت على رتبة `r+1`. `ك>= 1`. |
ك | الإزاحة القطرية. القيمة الموجبة تعني القطر الفائق، 0 تشير إلى القطر الرئيسي، والقيمة السالبة تعني الأقطار الفرعية. يمكن أن يكون `k` عددًا صحيحًا واحدًا (لقطر واحد) أو زوجًا من الأعداد الصحيحة التي تحدد الأطراف المنخفضة والعالية لنطاق المصفوفة. يجب ألا يكون `k[0]` أكبر من `k[1]`. |
خيارات | يحمل قيم السمات الاختيارية |
المرتجعات
- مثيل جديد من MatrixSetDiagV3