تدفق التوتر:: العمليات:: ماتريكسسيتدياجV3
#include <array_ops.h>
إرجاع موتر مصفوفة مجمعة بقيم قطرية مجمعة جديدة.
ملخص
بالنظر إلى input
diagonal
، تُرجع هذه العملية موترًا بنفس الشكل والقيم مثل input
، باستثناء الأقطار المحددة للمصفوفات الأعمق. سيتم استبدال هذه القيم بالقيم diagonal
.
input
له أبعاد r+1
[I, J, ..., L, M, N]
. عندما تكون k
عددية أو k[0] == k[1]
، diagonal
له أبعاد 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
صفر إلا عندما تكون محاذاة القطر إلى اليمين.
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]]]
Arguments:
- scope: A Scope object
- input: Rank
r+1
, wherer >= 1
. - diagonal: Rank
r
whenk
is an integer ork[0] == k[1]
. Otherwise, it has rankr+1
.k >= 1
. - k: Diagonal offset(s). Positive value means superdiagonal, 0 refers to the main diagonal, and negative value means subdiagonals.
k
can be a single integer (for a single diagonal) or a pair of integers specifying the low and high ends of a matrix band.k[0]
must not be larger thank[1]
.
Optional attributes (see Attrs
):
- align: Some diagonals are shorter than
max_diag_len
and need to be padded.align
is a string specifying how superdiagonals and subdiagonals should be aligned, respectively. There are four possible alignments: "RIGHT_LEFT" (default), "LEFT_RIGHT", "LEFT_LEFT", and "RIGHT_RIGHT". "RIGHT_LEFT" aligns superdiagonals to the right (left-pads the row) and subdiagonals to the left (right-pads the row). It is the packing format LAPACK uses. cuSPARSE uses "LEFT_RIGHT", which is the opposite alignment.
Returns:
Output
: Rankr+1
, withoutput.shape = input.shape
.
Constructors and Destructors |
|
---|---|
MatrixSetDiagV3(const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input diagonal, ::tensorflow::Input k)
|
|
MatrixSetDiagV3(const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input diagonal, ::tensorflow::Input k, const MatrixSetDiagV3::Attrs & attrs)
|
Public attributes |
|
---|---|
operation
|
|
output
|
Public functions |
|
---|---|
node() const
|
::tensorflow::Node *
|
operator::tensorflow::Input() const
|
|
operator::tensorflow::Output() const
|
|
Public static functions |
|
---|---|
Align(StringPiece x)
|
Structs |
|
---|---|
tensorflow:: |
Optional attribute setters for MatrixSetDiagV3. |
Public attributes
operation
Operation operation
الإخراج
::tensorflow::Output output
الوظائف العامة
ماتريكسسيتدياجV3
MatrixSetDiagV3( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input diagonal, ::tensorflow::Input k )
ماتريكسسيتدياجV3
MatrixSetDiagV3( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input diagonal, ::tensorflow::Input k, const MatrixSetDiagV3::Attrs & attrs )
العقدة
::tensorflow::Node * node() const
المشغل::tensorflow::الإدخال
operator::tensorflow::Input() const
المشغل::tensorflow::الإخراج
operator::tensorflow::Output() const
وظائف ثابتة العامة
محاذاة
Attrs Align( StringPiece x )
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2024-11-21 (حسب التوقيت العالمي المتفَّق عليه)