Einsum

clase final pública Einsum

Contracción tensorial según la convención de suma de Einstein.

Implementa la contracción y reducción generalizada del 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 consiste en el 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 los ejes con nombre pueden ser cualquier carácter único que no sea el que tiene un significado especial, a saber, `,.->`. El comportamiento de este Op no está definido si recibe una ecuación mal formateada; dado que la validación se realiza en el momento de la creación de gráficos, omitimos las comprobaciones de validación de formato en 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 eje 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 la 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 de los ejes `a` y `c` son las etiquetas de los ejes 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 conforman las dimensiones del lote en la contracción de 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 nuevamente la ecuación de multiplicación de matriz por lotes (`bij,bjk->bik`), la etiqueta del eje contraída es `j`.

(e) Expandir diagonal: si los subíndices de salida contienen etiquetas de eje repetidas (explícitas), se aplica la operación opuesta a (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 por 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 habilitar el cálculo del gradiente simbólico de tf.einsum .

Los subíndices de salida deben contener solo etiquetas que aparecen 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 sola elipsis (`...`). Estos puntos suspensivos se asignan a dimensiones que no corresponden a ninguna etiqueta de eje con nombre. Si dos entradas contienen puntos suspensivos, se transmiten de acuerdo con las [reglas] de transmisión NumPy estándar (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 argumento no válido.

Métodos públicos

Salida <T>
como salida ()
Devuelve el identificador simbólico de un tensor.
estática <T> Einsum <T>
crear ( ámbito de alcance, iterable< operando <T>> entradas, ecuación de cadena)
Método de fábrica para crear una clase que envuelve una nueva operación 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> 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 Einsum <T> create ( Scope scope, Iterable< Operando <T>> entradas, Ecuación de cadena)

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

Parámetros
alcance alcance actual
entradas Lista de 1 o 2 Tensores.
ecuación Cadena que describe la operación 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".