टेंसरफ़्लो:: ऑप्स:: मैट्रिक्ससेटडायग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))
आउटपुट [I, J, ..., L, M, N] आयामों के साथ रैंक k+1 का एक टेंसर है। यदि 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] ; otherwised = 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
rwhenkis 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.
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].
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: 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
आउटपुट
::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
ऑपरेटर::टेन्सरफ़्लो::इनपुट
operator::tensorflow::Input() const
ऑपरेटर::टेन्सरफ़्लो::आउटपुट
operator::tensorflow::Output() const
सार्वजनिक स्थैतिक कार्य
संरेखित
Attrs Align( StringPiece x )