Esta página foi traduzida pela API Cloud Translation.
Switch to English

tf.einsum

Versão do TensorFlow 1 Ver fonte no GitHub

Contração do tensor sobre os índices especificados e produto externo.

Usado nos notebooks

Usado no guia Usado nos tutoriais

O Einsum permite definir tensores, definindo sua computação em elementos. Esse cálculo é definido pela equation , uma forma abreviada baseada na soma de Einstein. Como exemplo, considere multiplicar duas matrizes A e B para formar uma matriz C. Os elementos de C são dados por:

   C[i,k] = sum_j A[i,j] * B[j,k]
 

A equation correspondente é:

   ij,jk->ik
 

Em geral, para converter a equação elemento a elemento na sequência de equation , use o seguinte procedimento (sequências intermediárias para exemplo de multiplicação de matrizes fornecidas entre parênteses):

  1. remova nomes de variáveis, colchetes e vírgulas, ( ik = sum_j ij * jk )
  2. substitua "*" por ",", ( ik = sum_j ij , jk )
  3. soltar sinais de soma, e ( ik = ij, jk )
  4. mova a saída para a direita, substituindo "=" por "->". ( ij,jk->ik )

Muitas operações comuns podem ser expressas dessa maneira. Por exemplo:

 # Matrix multiplication
einsum('ij,jk->ik', m0, m1)  # output[i,k] = sum_j m0[i,j] * m1[j, k]

# Dot product
einsum('i,i->', u, v)  # output = sum_i u[i]*v[i]

# Outer product
einsum('i,j->ij', u, v)  # output[i,j] = u[i]*v[j]

# Transpose
einsum('ij->ji', m)  # output[j,i] = m[i,j]

# Trace
einsum('ii', m)  # output[j,i] = trace(m) = sum_i m[i, i]

# Batch matrix multiplication
einsum('aij,ajk->aik', s, t)  # out[a,i,k] = sum_j s[a,i,j] * t[a, j, k]
 

Para habilitar e controlar a transmissão, use reticências. Por exemplo, para realizar a multiplicação da matriz de lote com transmissão no estilo NumPy nas dimensões de lote, use:

 einsum('...ij,...jk->...ik', u, v)
 

equation um str descrevendo a contração, no mesmo formato que numpy.einsum .
*inputs os insumos a serem contratados (cada um um Tensor ), cujas formas devem ser consistentes com a equation .
**kwargs

  • otimizar: Estratégia de otimização a ser usada para encontrar o caminho de contração usando opt_einsum. Deve ser 'ganancioso', 'ótimo', 'branch-2', 'branch-all' ou 'auto'. (opcional, padrão: 'ganancioso').
  • nome: um nome para a operação (opcional).

O Tensor contraído, com forma determinada por equation .

ValueError Se

  • o formato da equation está incorreto,
  • número de entradas ou suas formas são inconsistentes com a equation .