إرجاع موتر مصفوفة مجمعة بقيم قطرية مجمعة جديدة.
بالنظر إلى "الإدخال" و"القطري"، تُرجع هذه العملية موترًا له نفس الشكل والقيم مثل "الإدخال"، باستثناء الأقطار المحددة للمصفوفات الأعمق. سيتم استبدالها بالقيم الموجودة في "قطري".
`الإدخال` له أبعاد `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
"الإزاحة" هي صفر إلا عندما تكون محاذاة القطر إلى اليمين.
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
}
على سبيل المثال:
# 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]]]
فئات متداخلة
فصل | MatrixSetDiag.Options | السمات الاختيارية لـ MatrixSetDiag |
الثوابت
خيط | OP_NAME | اسم هذه العملية كما هو معروف بواسطة محرك TensorFlow الأساسي |
الأساليب العامة
ثابت MatrixSetDiag.Options | محاذاة (محاذاة السلسلة) |
الإخراج <T> | كإخراج () إرجاع المقبض الرمزي للموتر. |
ثابت <T يمتد TType > MatrixSetDiag <T> | |
الإخراج <T> | الإخراج () رتبة `r+1`، مع `output.shape = input.shape`. |
الطرق الموروثة
الثوابت
السلسلة النهائية الثابتة العامة OP_NAME
اسم هذه العملية كما هو معروف بواسطة محرك TensorFlow الأساسي
الأساليب العامة
محاذاة MatrixSetDiag.Options الثابتة العامة (محاذاة السلسلة)
حدود
محاذاة | بعض الأقطار أقصر من `max_diag_len` وتحتاج إلى الحشو. `align` عبارة عن سلسلة تحدد كيفية محاذاة الأقطار الفائقة والأقطار الفرعية، على التوالي. هناك أربع محاذاة محتملة: "RIGHT_LEFT" (افتراضي)، و"LEFT_RIGHT"، و"LEFT_LEFT"، و"RIGHT_RIGHT". يقوم "RIGHT_LEFT" بمحاذاة الأقطار الفائقة إلى اليمين (وسادات الصف اليسرى) والأقطار الفرعية إلى اليسار (وسادات الصف اليمنى). إنه تنسيق التعبئة الذي يستخدمه LAPACK. يستخدم cuSPARSE "LEFT_RIGHT"، وهو المحاذاة المعاكسة. |
---|
الإخراج العام <T> كإخراج ()
إرجاع المقبض الرمزي للموتر.
المدخلات إلى عمليات TensorFlow هي مخرجات عملية TensorFlow أخرى. يتم استخدام هذه الطريقة للحصول على مقبض رمزي يمثل حساب الإدخال.
إنشاء MatrixSetDiag <T> ثابت عام (نطاق النطاق ، إدخال المعامل <T>، المعامل <T> قطري، المعامل < TInt32 > k، خيارات... خيارات)
طريقة المصنع لإنشاء فئة تغلف عملية MatrixSetDiag جديدة.
حدود
نِطَاق | النطاق الحالي |
---|---|
مدخل | الرتبة `r+1`، حيث `r >= 1`. |
قطري | رتب `r` عندما يكون `k` عددًا صحيحًا أو `k[0] == k[1]`. وبخلاف ذلك، فقد حصلت على رتبة `r+1`. `ك>= 1`. |
ك | الإزاحة القطرية. القيمة الموجبة تعني القطر الفائق، 0 تشير إلى القطر الرئيسي، والقيمة السالبة تعني الأقطار الفرعية. يمكن أن يكون `k` عددًا صحيحًا واحدًا (لقطر واحد) أو زوجًا من الأعداد الصحيحة التي تحدد الأطراف المنخفضة والعالية لنطاق المصفوفة. يجب ألا يكون `k[0]` أكبر من `k[1]`. |
خيارات | يحمل قيم السمات الاختيارية |
المرتجعات
- مثيل جديد من MatrixSetDiag