Devuelve un tensor diagonal por lotes con valores diagonales por lotes dados.
Devuelve un tensor con el contenido en `diagonal` como `k[0]`-th a `k[1]`-th diagonales de una matriz, con todo lo demás rellenado con `padding`. `num_rows` y `num_cols` especifican la dimensión de la matriz más interna de la salida. Si no se especifican ambos, el operador asume que la matriz más interna es cuadrada e infiere su tamaño a partir de `k` y la dimensión más interna de `diagonal`. Si solo se especifica uno de ellos, el operador asume que el valor no especificado es el más pequeño posible según otros criterios.
Sea `diagonal` con dimensiones `r` `[I, J, ..., L, M, N]`. El tensor de salida tiene rango `r+1` con forma `[I, J, ..., L, M, num_rows, num_cols]` cuando solo se da una diagonal (`k` es un número entero o `k[0] == k[1]`). De lo contrario, tiene el rango `r` con la forma `[I, J, ..., L, num_rows, num_cols]`.
La segunda dimensión más interna de `diagonal` tiene un doble significado. Cuando `k` es escalar o `k[0] == k[1]`, `M` es parte del tamaño del lote [I, J, ..., M], y el tensor de salida es:
output[i, j, ..., l, m, n]
= diagonal[i, j, ..., l, n-max(d_upper, 0)] ; if n - m == d_upper
padding_value ; otherwise
De lo contrario, `M` se trata como el número de diagonales de la matriz en el mismo lote (`M = k[1]-k[0]+1`), y el tensor de salida es: output[i, j, ..., l, m, n]
= diagonal[i, j, ..., l, diag_index, index_in_diag] ; if k[0] <= d <= k[1]
padding_value ; otherwise
donde `d = n - m`, `diag_index = k[1] - d` e `index_in_diag = n - max(d, 0)`.Por ejemplo:
# The main diagonal.
diagonal = np.array([[1, 2, 3, 4], # Input shape: (2, 4)
[5, 6, 7, 8]])
tf.matrix_diag(diagonal) ==> [[[1, 0, 0, 0], # Output shape: (2, 4, 4)
[0, 2, 0, 0],
[0, 0, 3, 0],
[0, 0, 0, 4]],
[[5, 0, 0, 0],
[0, 6, 0, 0],
[0, 0, 7, 0],
[0, 0, 0, 8]]]
# A superdiagonal (per batch).
diagonal = np.array([[1, 2, 3], # Input shape: (2, 3)
[4, 5, 6]])
tf.matrix_diag(diagonal, k = 1)
==> [[[0, 1, 0, 0], # Output shape: (2, 4, 4)
[0, 0, 2, 0],
[0, 0, 0, 3],
[0, 0, 0, 0]],
[[0, 4, 0, 0],
[0, 0, 5, 0],
[0, 0, 0, 6],
[0, 0, 0, 0]]]
# A band of diagonals.
diagonals = np.array([[[1, 2, 3], # Input shape: (2, 2, 3)
[4, 5, 0]],
[[6, 7, 9],
[9, 1, 0]]])
tf.matrix_diag(diagonals, k = (-1, 0))
==> [[[1, 0, 0], # Output shape: (2, 3, 3)
[4, 2, 0],
[0, 5, 3]],
[[6, 0, 0],
[9, 7, 0],
[0, 1, 9]]]
# Rectangular matrix.
diagonal = np.array([1, 2]) # Input shape: (2)
tf.matrix_diag(diagonal, k = -1, num_rows = 3, num_cols = 4)
==> [[0, 0, 0, 0], # Output shape: (3, 4)
[1, 0, 0, 0],
[0, 2, 0, 0]]
# Rectangular matrix with inferred num_cols and padding_value = 9.
tf.matrix_diag(diagonal, k = -1, num_rows = 3, padding_value = 9)
==> [[9, 9], # Output shape: (3, 2)
[1, 9],
[9, 2]]
Métodos públicos
Salida <T> | como salida () Devuelve el identificador simbólico de un tensor. |
estático <T> MatrixDiagV2 <T> | |
Salida <T> | salida () Tiene rango `r+1` cuando `k` es un número entero o `k[0] == k[1]`, rango `r` en caso contrario. |
Métodos Heredados
Métodos públicos
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.
public static MatrixDiagV2 <T> create ( Scope scope, Operand <T> diagonal, Operand <Integer> k, Operand <Integer> numRows, Operand <Integer> numCols, Operand <T> paddingValue)
Método de fábrica para crear una clase que envuelve una nueva operación MatrixDiagV2.
Parámetros
alcance | alcance actual |
---|---|
diagonal | Rango `r`, donde `r >= 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]`. |
número de filas | El número de filas de la matriz de salida. Si no se proporciona, el operador asume que la matriz de salida es una matriz cuadrada e infiere el tamaño de la matriz a partir de k y la dimensión más interna de la `diagonal`. |
numCols | El número de columnas de la matriz de salida. Si no se proporciona, el operador asume que la matriz de salida es una matriz cuadrada e infiere el tamaño de la matriz a partir de k y la dimensión más interna de la `diagonal`. |
valor de relleno | El número con el que rellenar el área fuera de la banda diagonal especificada. El valor predeterminado es 0. |
Devoluciones
- una nueva instancia de MatrixDiagV2
salida pública <T> salida ()
Tiene rango `r+1` cuando `k` es un número entero o `k[0] == k[1]`, rango `r` en caso contrario.