MatrixSetDiagV3

clase final pública MatrixSetDiagV3

Devuelve un tensor de matriz por lotes con nuevos valores diagonales por lotes.

Dado `input` y `diagonal`, esta operación devuelve un tensor con la misma forma y valores que `input`, excepto por las diagonales especificadas de las matrices más internas. Estos serán sobrescritos por los valores en `diagonal`.

`entrada` tiene `r+1` dimensiones `[I, J, ..., L, M, N]`. Cuando `k` es escalar o `k[0] == k[1]`, `diagonal` tiene `r` dimensiones `[I, J, ..., L, max_diag_len]`. De lo contrario, tiene las dimensiones `r+1` `[I, J, ..., L, num_diags, max_diag_len]`. `num_diags` es el número de diagonales, `num_diags = k[1] - k[0] + 1`. `max_diag_len` es la diagonal más larga en el rango `[k[0], k[1]]`, `max_diag_len = min(M + min(k[1], 0), N + min(-k[0] , 0))`

La salida es un tensor de rango `k+1` con dimensiones `[I, J, ..., L, M, N]`. Si `k` es escalar o `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
 
De lo contrario,
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
 
donde `d = n - m`, `diag_index = k[1] - d` y ` index_in_diag = n - max(d, 0) + offset`.

`offset` es cero excepto cuando la alineación de la diagonal es a la derecha.

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
 
donde `diag_len(d) = min(cols - max(d, 0), filas + min(d, 0))`.

Por ejemplo:

# 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]]]
 
 

Clases anidadas

clase MatrixSetDiagV3.Opciones Atributos opcionales para MatrixSetDiagV3

Métodos públicos

MatrixSetDiagV3.Opciones estáticas
alinear (alineación de cadena)
Salida <T>
como salida ()
Devuelve el identificador simbólico de un tensor.
estático <T> MatrixSetDiagV3 <T>
crear ( Ámbito ámbito, Operando <T> entrada, Operando <T> diagonal, Operando <Entero> k, Opciones... opciones)
Método de fábrica para crear una clase que envuelve una nueva operación MatrixSetDiagV3.
Salida <T>
salida ()
Clasifique `r+1`, con `output.shape = input.shape`.

Métodos Heredados

Métodos públicos

MatrixSetDiagV3.Options estático público alineado (alineación de cadena)

Parámetros
alinear Algunas diagonales son más cortas que `max_diag_len` y deben rellenarse. `align` es una cadena que especifica cómo deben alinearse las superdiagonales y las subdiagonales, respectivamente. Hay cuatro alineaciones posibles: "DERECHA_IZQUIERDA" (predeterminada), "IZQUIERDA_DERECHA", "IZQUIERDA_IZQUIERDA" y "DERECHA_DERECHA". "RIGHT_LEFT" alinea las superdiagonales a la derecha (rellena la fila a la izquierda) y las subdiagonales a la izquierda (rellena la fila a la derecha). Es el formato de empaque que utiliza LAPACK. cuSPARSE usa "LEFT_RIGHT", que es la alineación opuesta.

salida pública <T> como salida ()

Devuelve el identificador simbólico de un tensor.

Las entradas de las operaciones de TensorFlow son salidas de otra operación de TensorFlow. Este método se utiliza para obtener un identificador simbólico que representa el cálculo de la entrada.

MatrixSetDiagV3 estático público <T> crear ( Alcance alcance, Operando <T> entrada, Operando <T> diagonal, Operando <Entero> k, Opciones... opciones)

Método de fábrica para crear una clase que envuelve una nueva operación MatrixSetDiagV3.

Parámetros
alcance alcance actual
aporte Rango `r+1`, donde `r >= 1`.
diagonal Clasifica `r` cuando `k` es un número entero o `k[0] == k[1]`. De lo contrario, tiene rango `r+1`. `k >= 1`.
k Desplazamiento(s) diagonal(es). Un valor positivo significa superdiagonal, 0 se refiere a la diagonal principal y un valor negativo significa subdiagonales. `k` puede ser un solo número entero (para una sola diagonal) o un par de números enteros que especifican los extremos inferior y superior de una banda de matriz. `k[0]` no debe ser mayor que `k[1]`.
opciones lleva valores de atributos opcionales
Devoluciones
  • una nueva instancia de MatrixSetDiagV3

salida pública <T> salida ()

Clasifique `r+1`, con `output.shape = input.shape`.