MatrixDiagPartV3

clase final pública MatrixDiagPartV3

Devuelve la parte diagonal por lotes de un tensor por lotes.

Devuelve un tensor con las diagonales `k[0]`-ésima a `k[1]`-ésima de la "entrada" por lotes.

Supongamos que la "entrada" tiene dimensiones "r" "[I, J, ..., L, M, N]". Sea `max_diag_len` la longitud máxima entre todas las diagonales que se extraerán, `max_diag_len = min(M + min(k[1], 0), N + min(-k[0], 0))` Sea `num_diags` Sea el número de diagonales a extraer, `num_diags = k[1] - k[0] + 1`.

Si `num_diags == 1`, el tensor de salida es de rango `r - 1` con forma `[I, J, ..., L, max_diag_len]` y valores:

diagonal[i, j, ..., l, n]
   = input[i, j, ..., l, n+y, n+x] ; if 0 <= n+y < M and 0 <= n+x < N,
     padding_value                 ; otherwise.
 
donde `y = máx(-k[1], 0)`, `x = máx(k[1], 0)`.

De lo contrario, el tensor de salida tiene rango `r` con dimensiones `[I, J, ..., L, num_diags, max_diag_len]` con valores:

diagonal[i, j, ..., l, m, n]
   = input[i, j, ..., l, n+y, n+x] ; if 0 <= n+y < M and 0 <= n+x < N,
     padding_value                 ; otherwise.
 
donde `d = k[1] - m`, `y = max(-d, 0) - offset` y `x = max(d, 0) - offset`.

El "desplazamiento" es cero, excepto cuando la alineación de la diagonal es hacia 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))`.

La entrada debe ser al menos una matriz.

Por ejemplo:

input = np.array([[[1, 2, 3, 4],  # Input shape: (2, 3, 4)
                    [5, 6, 7, 8],
                    [9, 8, 7, 6]],
                   [[5, 4, 3, 2],
                    [1, 2, 3, 4],
                    [5, 6, 7, 8]]])
 
 # A main diagonal from each batch.
 tf.matrix_diag_part(input) ==> [[1, 6, 7],  # Output shape: (2, 3)
                                 [5, 2, 7]]
 
 # A superdiagonal from each batch.
 tf.matrix_diag_part(input, k = 1)
   ==> [[2, 7, 6],  # Output shape: (2, 3)
        [4, 3, 8]]
 
 # A band from each batch.
 tf.matrix_diag_part(input, k = (-1, 2))
   ==> [[[0, 3, 8],  # Output shape: (2, 4, 3)
         [2, 7, 6],
         [1, 6, 7],
         [5, 8, 0]],
        [[0, 3, 4],
         [4, 3, 8],
         [5, 2, 7],
         [1, 6, 0]]]
 
 # LEFT_RIGHT alignment.
 tf.matrix_diag_part(input, k = (-1, 2), align="LEFT_RIGHT")
   ==> [[[3, 8, 0],  # Output shape: (2, 4, 3)
         [2, 7, 6],
         [1, 6, 7],
         [0, 5, 8]],
        [[3, 4, 0],
         [4, 3, 8],
         [5, 2, 7],
         [0, 1, 6]]]
 
 # max_diag_len can be shorter than the main diagonal.
 tf.matrix_diag_part(input, k = (-2, -1))
   ==> [[[5, 8],
         [9, 0]],
        [[1, 6],
         [5, 0]]]
 
 # padding_value = 9
 tf.matrix_diag_part(input, k = (1, 3), padding_value = 9)
   ==> [[[9, 9, 4],  # Output shape: (2, 3, 3)
         [9, 3, 8],
         [2, 7, 6]],
        [[9, 9, 2],
         [9, 3, 4],
         [4, 3, 8]]]
 
 

Clases anidadas

clase MatrixDiagPartV3.Opciones Atributos opcionales para MatrixDiagPartV3

Constantes

Cadena OP_NOMBRE El nombre de esta operación, como lo conoce el motor central de TensorFlow.

Métodos públicos

Estático MatrixDiagPartV3.Options
alinear (alinear cadenas)
Salida <T>
como salida ()
Devuelve el identificador simbólico del tensor.
estático <T extiende TType > MatrixDiagPartV3 <T>
crear (alcance alcance , entrada del operando <T>, operando <TInt32> k, operando <T> paddingValue, opciones... opciones)
Método de fábrica para crear una clase que envuelve una nueva operación MatrixDiagPartV3.
Salida <T>
diagonal ()
Las diagonales extraídas.

Métodos heredados

Constantes

Cadena final estática pública OP_NAME

El nombre de esta operación, como lo conoce el motor central de TensorFlow.

Valor constante: "MatrixDiagPartV3"

Métodos públicos

MatrixDiagPartV3.Options estática pública alineada (alineación de cadenas)

Parámetros
alinear Algunas diagonales son más cortas que `max_diag_len` y es necesario rellenarlas. `align` es una cadena que especifica cómo se deben alinear las superdiagonales y subdiagonales, respectivamente. Hay cuatro alineaciones posibles: "RIGHT_LEFT" (predeterminado), "LEFT_RIGHT", "LEFT_LEFT" y "RIGHT_RIGHT". "RIGHT_LEFT" alinea las superdiagonales a la derecha (rellena la fila con la izquierda) y las subdiagonales a la izquierda (rellena la fila con la derecha). Es el formato de embalaje que utiliza LAPACK. cuSPARSE usa "LEFT_RIGHT", que es la alineación opuesta.

Salida pública <T> como Salida ()

Devuelve el identificador simbólico del tensor.

Las entradas a 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.

creación pública estática de MatrixDiagPartV3 <T> (alcance del alcance, entrada del operando <T>, operando <TInt32> k, operando <T> paddingValue, opciones... opciones)

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

Parámetros
alcance alcance actual
aporte Tensor de rango `r` donde `r >= 2`.
k Desplazamientos diagonales. El valor positivo significa superdiagonal, 0 se refiere a la diagonal principal y el valor negativo significa subdiagonales. `k` puede ser un único número entero (para una única 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]`.
valor de relleno El valor con el que rellenar el área fuera de la banda diagonal especificada. El valor predeterminado es 0.
opciones lleva valores de atributos opcionales
Devoluciones
  • una nueva instancia de MatrixDiagPartV3

Salida pública <T> diagonal ()

Las diagonales extraídas.