Se usó la API de Cloud Translation para traducir esta página.
Switch to English

tf.einsum

Versión TensorFlow 1 Ver código fuente en GitHub

Contracción del tensor sobre índices especificados y producto externo.

Usado en los cuadernos

Usado en la guía Usado en los tutoriales

Einsum permite definir tensores definiendo su cálculo por elementos. Este cálculo se define por equation , una forma abreviada basada en la suma de Einstein. Como ejemplo, considere multiplicar dos matrices A y B para formar una matriz C. Los elementos de C están dados por:

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

La equation correspondiente es:

   ij,jk->ik
 

En general, para convertir la ecuación por elementos en la cadena de equation , utilice el siguiente procedimiento (cadenas intermedias para el ejemplo de multiplicación de matrices entre paréntesis):

  1. eliminar nombres de variables, corchetes y comas ( ik = sum_j ij * jk )
  2. reemplace "*" con ",", ( ik = sum_j ij , jk )
  3. quitar signos de suma y ( ik = ij, jk )
  4. mueva la salida hacia la derecha, mientras reemplaza "=" con "->". ( ij,jk->ik )

Muchas operaciones comunes se pueden expresar de esta manera. Por ejemplo:

 # 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 y controlar la transmisión, utilice puntos suspensivos. Por ejemplo, para realizar la multiplicación de matrices por lotes con difusión de estilo NumPy en las dimensiones del lote, utilice:

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

equation una str describe la contracción, en el mismo formato que numpy.einsum .
*inputs las entradas a contraer (cada una un Tensor ), cuyas formas deben ser consistentes con la equation .
**kwargs

  • optimizar: estrategia de optimización para encontrar la ruta de contracción usando opt_einsum. Debe ser 'codicioso', 'óptimo', 'branch-2', 'branch-all' o 'auto'. (opcional, predeterminado: 'codicioso').
  • nombre: un nombre para la operación (opcional).

El Tensor contratado, con forma determinada por la equation .

ValueError Si

  • el formato de la equation es incorrecto
  • número de entradas o sus formas son inconsistentes con la equation .