Einsum

clase final pública 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 sea el que tiene 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 Op no está destinada a ser llamada 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 dimensiones de 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 el cálculo del 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ático <T> Einsum <T>
crear ( alcance de alcance, Iterable < Operand <T>> entradas, ecuación de cadena)
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

Salida pública <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> create ( alcance de alcance, entradas Iterable < Operand <T>>, ecuación de cadena)

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

salida pública <T> salida ()

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