tensorflow:: عملیات:: MatrixDiagV3
#include <array_ops.h>یک تانسور قطری دسته بندی شده با مقادیر قطری دسته بندی شده داده شده را برمیگرداند.
خلاصه
یک تانسور با محتویات diagonal به صورت k[0] -ام تا k[1] -ام یک ماتریس را برمیگرداند، و هر چیز دیگری با padding پر شده است. num_rows و num_cols بُعد درونیترین ماتریس خروجی را مشخص میکنند. اگر هر دو مشخص نشده باشند، op فرض میکند که درونیترین ماتریس مربع است و اندازه آن را از k و درونیترین بُعد diagonal استنباط میکند. اگر فقط یکی از آنها مشخص شده باشد، op فرض میکند که مقدار نامشخص، بر اساس معیارهای دیگر، کوچکترین مقدار ممکن است.
فرض کنید diagonal دارای r بُعد [I, J, ..., L, M, N] باشد. تانسور خروجی وقتی فقط یک قطر داده شده باشد ( k یک عدد صحیح باشد یا k[0] == k[1] r+1 با شکل [I, J, ..., L, M, num_rows, num_cols] است. در غیر این صورت، دارای رتبه r با شکل [I, J, ..., L, num_rows, num_cols] است.
دومین بُعد داخلی diagonal ، معنای دوگانهای دارد. وقتی k اسکالر یا k[0] == k[1] باشد، M بخشی از اندازه دسته [I، J، ...، M] است و تانسور خروجی به صورت زیر است:
output[i, j, ..., l, m, n]
= diagonal[i, j, ..., l, n-max(d_upper, 0)] ; if n - m == d_upper
padding_value ; otherwise در غیر این صورت، M به عنوان تعداد قطرهای ماتریس در همان دسته در نظر گرفته میشود ( M = k[1]-k[0]+1 )، و تانسور خروجی به صورت زیر است:
output[i, j, ..., l, m, n]
= diagonal[i, j, ..., l, diag_index, index_in_diag] ; if k[0] <= d <= k[1]
padding_value ; otherwised = n - m ، diag_index = [k] - 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. diagonal = np.array([[1, 2, 3, 4], # Input shape: (2, 4) [5, 6, 7, 8]]) tf.matrix_diag(diagonal) ==> [[[1, 0, 0, 0], # Output shape: (2, 4, 4) [0, 2, 0, 0], [0, 0, 3, 0], [0, 0, 0, 4]], [[5, 0, 0, 0], [0, 6, 0, 0], [0, 0, 7, 0], [0, 0, 0, 8]]]
# A superdiagonal (per batch). diagonal = np.array([[1, 2, 3], # Input shape: (2, 3) [4, 5, 6]]) tf.matrix_diag(diagonal, k = 1) ==> [[[0, 1, 0, 0], # Output shape: (2, 4, 4) [0, 0, 2, 0], [0, 0, 0, 3], [0, 0, 0, 0]], [[0, 4, 0, 0], [0, 0, 5, 0], [0, 0, 0, 6], [0, 0, 0, 0]]]
# A tridiagonal band (per batch). diagonals = np.array([[[0, 8, 9], # Input shape: (2, 2, 3) [1, 2, 3], [4, 5, 0]], [[0, 2, 3], [6, 7, 9], [9, 1, 0]]]) tf.matrix_diag(diagonals, k = (-1, 1)) ==> [[[1, 8, 0], # Output shape: (2, 3, 3) [4, 2, 9], [0, 5, 3]], [[6, 2, 0], [9, 7, 3], [0, 1, 9]]]
# LEFT_RIGHT alignment. diagonals = np.array([[[8, 9, 0], # Input shape: (2, 2, 3) [1, 2, 3], [0, 4, 5]], [[2, 3, 0], [6, 7, 9], [0, 9, 1]]]) tf.matrix_diag(diagonals, k = (-1, 1), align="LEFT_RIGHT") ==> [[[1, 8, 0], # Output shape: (2, 3, 3) [4, 2, 9], [0, 5, 3]], [[6, 2, 0], [9, 7, 3], [0, 1, 9]]]
# Rectangular matrix. diagonal = np.array([1, 2]) # Input shape: (2) tf.matrix_diag(diagonal, k = -1, num_rows = 3, num_cols = 4) ==> [[0, 0, 0, 0], # Output shape: (3, 4) [1, 0, 0, 0], [0, 2, 0, 0]]
# Rectangular matrix with inferred num_cols and padding_value = 9. tf.matrix_diag(diagonal, k = -1, num_rows = 3, padding_value = 9) ==> [[9, 9], # Output shape: (3, 2) [1, 9], [9, 2]]
Arguments:
- scope: A Scope object
- diagonal: Rank
r, wherer >= 1 - k: Diagonal offset(s). Positive value means superdiagonal, 0 refers to the main diagonal, and negative value means subdiagonals.
kcan 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]. - num_rows: The number of rows of the output matrix. If it is not provided, the op assumes the output matrix is a square matrix and infers the matrix size from k and the innermost dimension of
diagonal. - num_cols: The number of columns of the output matrix. If it is not provided, the op assumes the output matrix is a square matrix and infers the matrix size from k and the innermost dimension of
diagonal. - padding_value: The number to fill the area outside the specified diagonal band with. Default is 0.
Optional attributes (see Attrs):
- align: Some diagonals are shorter than
max_diag_lenand need to be padded.alignis 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: Has rankr+1whenkis an integer ork[0] == k[1], rankrotherwise.
Constructors and Destructors |
|
|---|---|
MatrixDiagV3(const ::tensorflow::Scope & scope, ::tensorflow::Input diagonal, ::tensorflow::Input k, ::tensorflow::Input num_rows, ::tensorflow::Input num_cols, ::tensorflow::Input padding_value)
|
|
MatrixDiagV3(const ::tensorflow::Scope & scope, ::tensorflow::Input diagonal, ::tensorflow::Input k, ::tensorflow::Input num_rows, ::tensorflow::Input num_cols, ::tensorflow::Input padding_value, const MatrixDiagV3::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 MatrixDiagV3. |
Public attributes
operation
Operation operation
خروجی
::tensorflow::Output output
کارکردهای عمومی
ماتریس دیاگ وی۳
MatrixDiagV3( const ::tensorflow::Scope & scope, ::tensorflow::Input diagonal, ::tensorflow::Input k, ::tensorflow::Input num_rows, ::tensorflow::Input num_cols, ::tensorflow::Input padding_value )
ماتریس دیاگ وی۳
MatrixDiagV3( const ::tensorflow::Scope & scope, ::tensorflow::Input diagonal, ::tensorflow::Input k, ::tensorflow::Input num_rows, ::tensorflow::Input num_cols, ::tensorflow::Input padding_value, const MatrixDiagV3::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 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2026-11-05 بهوقت ساعت هماهنگ جهانی.