Advertencia: esta API está obsoleta y se eliminará en una versión futura de TensorFlow una vez que el reemplazo sea ​​estable.

Einsum

Clase public final Einsum

Contracción del tensor según la convención de suma de Einstein.

Implementa la contracción y reducción generalizada de Tensor. Cada tensor de entrada debe tener un subíndice de entrada correspondiente que aparezca en el lado izquierdo de la ecuación separado por comas. El lado derecho de la ecuación consta del subíndice de salida. Los subíndices de entrada y el subíndice de salida deben constar de cero o más etiquetas de eje con nombre y como máximo una elipsis (`...`).

Las etiquetas de eje nombradas pueden ser cualquier carácter único que no sean los que tienen un significado especial, a saber, `, .->`. El comportamiento de esta operación es indefinido si recibe una ecuación mal formateada; dado que la validación se realiza en el momento de la creación del gráfico, omitimos las comprobaciones de validación de formato en el tiempo de ejecución.

Nota: esta operación no está destinado a ser llamado por el usuario; en su lugar, los usuarios deben llamar a `tf.einsum` directamente. Es una operación oculta utilizada por `tf.einsum`.

Las operaciones se aplican a las entradas de acuerdo con las siguientes reglas:

(a) Diagonales generalizadas: para las dimensiones de entrada correspondientes a las etiquetas de los ejes que aparecen más de una vez en el mismo subíndice de entrada, tomamos la diagonal generalizada (`k`-dimensional). Por ejemplo, en la ecuación `iii-> i` con forma de entrada` [3, 3, 3] `, la diagonal generalizada constaría de` 3` elementos en los índices `(0, 0, 0)`, `(1 , 1, 1) `y` (2, 2, 2) `para crear un tensor de forma` [3] `.

(b) Reducción: Los ejes correspondientes a las etiquetas que aparecen solo en un subíndice de entrada pero no en el subíndice de salida se suman antes de la contracción del tensor. Por ejemplo, en la ecuación `ab, bc-> b`, las etiquetas del eje` a` y `c` son las etiquetas del eje de reducción.

(c) Dimensiones del lote: Los ejes correspondientes a las etiquetas que aparecen en cada uno de los subíndices de entrada y también en el subíndice de salida componen las dimensiones del lote en la contracción del tensor. Las etiquetas de eje sin nombre correspondientes a puntos suspensivos (`...`) también corresponden a las dimensiones del lote. Por ejemplo, para la ecuación que denota la multiplicación de matrices por lotes, `bij, bjk-> bik`, la etiqueta del eje` b` corresponde a una dimensión de lote.

(d) Contracción: En el caso de einsum binario, los ejes correspondientes a las etiquetas que aparecen en dos entradas diferentes (y no en la salida) se contraen entre sí. Considerando de nuevo la ecuación de multiplicación de matrices por lotes (`bij, bjk-> bik`), la etiqueta del eje contraído es` j`.

(e) Expandir diagonal: si los subíndices de salida contienen etiquetas de eje repetidas (explícitas), se aplica la operación opuesta de (a). Por ejemplo, en la ecuación `i-> iii`, y la forma de entrada` [3] `, la salida de la forma` [3, 3, 3] `son todos ceros, excepto la diagonal (generalizada) que se rellena con valores de la entrada. Nota: Esta operación no es compatible con `np.einsum` o` tf.einsum`; se proporciona para permitir calcular el gradiente simbólico de `tf.einsum`.

Los subíndices de salida deben contener solo etiquetas que aparezcan en al menos uno de los subíndices de entrada. Además, todas las dimensiones asignadas a la misma etiqueta de eje deben ser iguales.

Cualquiera de los subíndices de entrada y salida puede contener como máximo una elipsis única (`...`). Estos puntos suspensivos se asignan a las dimensiones que no corresponden a ninguna etiqueta de eje con nombre. Si dos entradas contienen puntos suspensivos, entonces se transmiten de acuerdo con las [reglas] de transmisión estándar de NumPy (http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html).

Las dimensiones transmitidas se colocan en la ubicación correspondiente de los puntos suspensivos en el subíndice de salida. Si las dimensiones transmitidas no están vacías y los subíndices de salida no contienen puntos suspensivos, se genera un error de InvalidArgument.

Métodos públicos

Salida <T>
asOutput ()
Devuelve el identificador simbólico de un tensor.
estática <T> Einsum <T>
crear ( Alcance alcance, Iterable < Operando <T >> entradas, la ecuación String)
Método de fábrica para crear una clase que envuelva una nueva operación de Einsum.
Salida <T>
salida ()
Tensor de salida con forma que depende de la "ecuación".

Métodos heredados

Métodos públicos

pública de salida <T> asOutput ()

Devuelve el identificador simbólico de un 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 Einsum <T> crear ( Alcance alcance, Iterable < operando <T >> entradas, la ecuación de cuerda)

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

Parámetros
alcance alcance actual
entradas Lista de 1 o 2 tensores.
ecuación Cadena que describe la operación de suma de Einstein; en el formato de np.einsum.
Devoluciones
  • una nueva instancia de Einsum

pública de salida <T> salida ()

Tensor de salida con forma que depende de la "ecuación".