przepływ tensorowy:: ops:: MatrixSetDiagV3
#include <array_ops.h>Zwraca tensor macierzy wsadowej z nowymi wsadowymi wartościami przekątnej.
Streszczenie
 Biorąc pod uwagę input i diagonal , operacja ta zwraca tensor o tym samym kształcie i wartościach co input , z wyjątkiem określonych przekątnych najbardziej wewnętrznych macierzy. Zostaną one nadpisane przez wartości w diagonal .
 input ma wymiary r+1 [I, J, ..., L, M, N] . Gdy k jest skalarem lub k[0] == k[1] , diagonal ma r wymiarów [I, J, ..., L, max_diag_len] . W przeciwnym razie ma wymiary r+1 [I, J, ..., L, num_diags, max_diag_len] . num_diags to liczba przekątnych, num_diags = k[1] - k[0] + 1 . max_diag_len to najdłuższa przekątna z zakresu [k[0], k[1]] , max_diag_len = min(M + min(k[1], 0), N + min(-k[0], 0))
 Wynikiem jest tensor stopnia k+1 o wymiarach [I, J, ..., L, M, N] . Jeśli k jest skalarem lub 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]              ; otherwiseW przeciwnym razie,
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 i index_in_diag = n - max(d, 0) + offset . offset wynosi zero, z wyjątkiem sytuacji, gdy wyrównanie przekątnej jest w prawo.
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)) .Na przykład:
# 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: Rank- r+1, with- output.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
wyjście
::tensorflow::Output output
Funkcje publiczne
MatrixSetDiagV3
MatrixSetDiagV3( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input diagonal, ::tensorflow::Input k )
MatrixSetDiagV3
MatrixSetDiagV3( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input diagonal, ::tensorflow::Input k, const MatrixSetDiagV3::Attrs & attrs )
węzeł
::tensorflow::Node * node() const
operator::tensorflow::Wejście
operator::tensorflow::Input() const
operator::tensorflow::Wyjście
operator::tensorflow::Output() const
Publiczne funkcje statyczne
Wyrównywać
Attrs Align( StringPiece x )