Einsum

aula final pública Einsum

Contração tensorial de acordo com a convenção de soma de Einstein.

Implementa contração e redução generalizada do Tensor. Cada Tensor de entrada deve ter um subscrito de entrada correspondente aparecendo no lado esquerdo da equação, separado por vírgula. O lado direito da equação consiste no subscrito de saída. Os subscritos de entrada e o subscrito de saída devem consistir em zero ou mais rótulos de eixo nomeados e no máximo uma reticência (`...`).

Os rótulos dos eixos nomeados podem ser qualquer caractere único, exceto aqueles com significado especial, ou seja, `,.->`. O comportamento deste Op é indefinido se receber uma equação mal formatada; como a validação é feita no momento da construção do gráfico, omitimos as verificações de validação de formato no tempo de execução.

Nota: Este Op não se destina a ser chamado pelo usuário; em vez disso, os usuários devem ligar diretamente para tf.einsum . É um Op oculto usado por tf.einsum .

As operações são aplicadas à(s) entrada(s) de acordo com as seguintes regras:

(a) Diagonais Generalizadas: Para dimensões de entrada correspondentes a rótulos de eixo que aparecem mais de uma vez no mesmo subscrito de entrada, tomamos a diagonal generalizada (`k`-dimensional). Por exemplo, na equação `iii->i` com forma de entrada `[3, 3, 3]`, a diagonal generalizada consistiria em `3` elementos nos índices `(0, 0, 0)`, `(1 , 1, 1)` e `(2, 2, 2)` para criar um tensor de forma `[3]`.

(b) Redução: Os eixos correspondentes aos rótulos que aparecem apenas em um subscrito de entrada, mas não no subscrito de saída, são somados antes da contração do Tensor. Por exemplo, na equação `ab,bc->b`, os rótulos dos eixos `a` e `c` são os rótulos dos eixos de redução.

(c) Dimensões do lote: Os eixos correspondentes aos rótulos que aparecem em cada um dos subscritos de entrada e também no subscrito de saída compõem as dimensões do lote na contração do Tensor. Os rótulos de eixo sem nome correspondentes às reticências (`...`) também correspondem às dimensões do lote. Por exemplo, para a equação que denota a multiplicação de matrizes em lote, `bij,bjk->bik`, o rótulo do eixo `b` corresponde a uma dimensão de lote.

(d) Contração: No caso de einsum binário, os eixos correspondentes aos rótulos que aparecem em duas entradas diferentes (e não na saída) são contraídos entre si. Considerando novamente a equação de multiplicação de matrizes em lote (`bij,bjk->bik`), o rótulo do eixo contraído é `j`.

(e) Expandir Diagonal: Se os subscritos de saída contiverem rótulos de eixo repetidos (explícitos), a operação oposta de (a) será aplicada. Por exemplo, na equação `i->iii` e na forma de entrada `[3]`, a saída da forma `[3, 3, 3]` são todos zeros, exceto para a diagonal (generalizada) que é preenchida com valores da entrada. Nota: Esta operação não é suportada por `np.einsum` ou tf.einsum ; é fornecido para permitir o cálculo do gradiente simbólico de tf.einsum .

Os subscritos de saída devem conter apenas rótulos que aparecem em pelo menos um dos subscritos de entrada. Além disso, todas as dimensões mapeadas para o mesmo rótulo de eixo devem ser iguais.

Qualquer um dos subscritos de entrada e saída pode conter no máximo uma única reticência (`...`). Essas reticências são mapeadas em dimensões que não correspondem a nenhum rótulo de eixo nomeado. Se duas entradas contiverem reticências, elas serão transmitidas de acordo com as [regras] de transmissão padrão do NumPy (http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html).

As dimensões transmitidas são colocadas no local correspondente das reticências no subscrito de saída. Se as dimensões transmitidas não estiverem vazias e os subscritos de saída não contiverem reticências, um erro InvalidArgument será gerado.

Métodos Públicos

Saída <T>
asOutput ()
Retorna o identificador simbólico de um tensor.
estático <T> Einsum <T>
create (escopo do escopo , entradas Iterable< Operand <T>>, equação de String)
Método de fábrica para criar uma classe que envolve uma nova operação Einsum.
Saída <T>
saída ()
Tensor de saída com forma dependendo da `equação`.

Métodos herdados

Métodos Públicos

Saída pública <T> asOutput ()

Retorna o identificador simbólico de um tensor.

As entradas para operações do TensorFlow são saídas de outra operação do TensorFlow. Este método é usado para obter um identificador simbólico que representa o cálculo da entrada.

public static Einsum <T> create (escopo do escopo , entradas Iterable< Operand <T>>, equação de String)

Método de fábrica para criar uma classe que envolve uma nova operação Einsum.

Parâmetros
escopo escopo atual
entradas Lista de 1 ou 2 tensores.
equação String que descreve a operação de Soma do Einstein; no formato np.einsum.
Devoluções
  • uma nova instância de Einsum

Saída pública <T> saída ()

Tensor de saída com forma dependendo da `equação`.