टेंसरफ़्लो:: ऑप्स:: मैट्रिक्ससेटडायगV2
#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]
output[i, j, ..., l, m, n] ; otherwise
अन्यथा,
output[i, j, ..., l, m, n]
= diagonal[i, j, ..., l, k[1]-d, n-max(d, 0)] ; if d_lower <= d <= d_upper
input[i, j, ..., l, m, n] ; otherwise
d = n - m
उदाहरण के लिए:
# 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_diag(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_diag(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([[[1, 2, 3], # Diagonal shape: (2, 2, 3)
[4, 5, 0]],
[[6, 1, 2],
[3, 4, 0]]])
tf.matrix_diag(diagonals, k = (-1, 0))
==> [[[1, 7, 7, 7], # Output shape: (2, 3, 4)
[4, 2, 7, 7],
[0, 5, 3, 7]],
[[6, 7, 7, 7],
[3, 1, 7, 7],
[7, 4, 2, 7]]]
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]
.
Returns:
Output
: Rankr+1
, withoutput.shape = input.shape
.
Constructors and Destructors | |
---|---|
MatrixSetDiagV2(const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input diagonal, ::tensorflow::Input k) |
Public functions | |
---|---|
node() const | ::tensorflow::Node * |
operator::tensorflow::Input() const |
|
operator::tensorflow::Output() const |
|