MatrixSetDiag

MatrixSetDiag public final class

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

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

`input` tiene las dimensiones` r + 1` `[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 `r + 1` dimensiones` [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 del 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) + desplazamiento`.

`offset` 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))`.

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 MatrixSetDiag.Options Los atributos opcionales para MatrixSetDiag

Constantes

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

Métodos públicos

estáticas MatrixSetDiag.Options
align (align String)
Salida <T>
asOutput ()
Devuelve el identificador simbólico del tensor.
estática <T se extiende Ttype > MatrixSetDiag <T>
crear ( Alcance alcance, operando <T> de entrada, operando <T> diagonal, operando < TInt32 > k, Opciones ... Opciones)
Método de fábrica para crear una clase que envuelva una nueva operación MatrixSetDiag.
Salida <T>
salida ()
Clasifique `r + 1`, con` output.shape = input.shape`.

Métodos heredados

org.tensorflow.op.RawOp
booleano final
es igual a (Object obj)
int final
Operación
op ()
Devuelva esta unidad de cálculo como una sola Operation .
cadena final
booleano
equals (Object arg0)
Clase final <?>
getClass ()
En t
hashCode ()
vacío final
notificar ()
vacío final
notifyAll ()
Cuerda
toString ()
vacío final
espera (tiempo arg0, arg1 int)
vacío final
espera (arg0 largo)
vacío final
wait ()
org.tensorflow.op.Op
abstracta ExecutionEnvironment
env ()
Devuelve el entorno de ejecución en el que se creó esta operación.
abstracta Operación
op ()
Devuelva esta unidad de cálculo como una sola Operation .
org.tensorflow.Operand
abstracta de salida <T>
asOutput ()
Devuelve el identificador simbólico del tensor.
T abstracto
asTensor ()
Devuelve el tensor en este operando.
abstracta Forma
forma ()
Devuelve el (posiblemente parcialmente conocida) forma del tensor se hace referencia por la Output de esta operando.
clase abstracta <T>
escriba ()
Devuelve el tipo de tensor de este operando
org.tensorflow.ndarray.Shaped
int abstracto
rango ()
abstracta Forma
forma ()
abstracto largo
tamaño ()
Calcula y devuelve el tamaño total de este contenedor, en número de valores.

Constantes

OP_NAME pública final static String

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

Valor constante: "MatrixSetDiagV3"

Métodos públicos

estáticas pública MatrixSetDiag.Options align (align String)

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 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 a la izquierda) y las subdiagonales a la izquierda (rellena la fila a la derecha). Es el formato de empaque que usa LAPACK. cuSPARSE usa "LEFT_RIGHT", que es la alineación opuesta.

pública de salida <T> asOutput ()

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.

public static MatrixSetDiag <T> crear ( Alcance alcance, operando <T> de entrada, operando <T> diagonal, operando < TInt32 > k, Opciones ... Opciones)

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

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 (s). El valor positivo significa superdiagonal, 0 se refiere a la diagonal principal y el valor negativo significa subdiagonales. `k` puede ser un solo entero (para una sola diagonal) o un par de números enteros que especifiquen los extremos bajo y alto 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 MatrixSetDiag

pública de salida <T> salida ()

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