Einsum

classe finale pubblica Einsum

Contrazione tensoriale secondo la convenzione di sommatoria di Einstein.

Implementa la contrazione e la riduzione generalizzata del tensore. Ogni tensore di input deve avere un pedice di input corrispondente che appare nella parte sinistra dell'equazione separata da virgole. Il lato destro dell'equazione è costituito dal pedice di output. Gli indici di input e gli indici di output dovrebbero essere costituiti da zero o più etichette di assi con nome e al massimo da un'ellissi (`...`).

Le etichette degli assi con nome possono essere un qualsiasi carattere diverso da quelli che hanno un significato speciale, vale a dire `, .->`. Il comportamento di questo Op è indefinito se riceve un'equazione mal formattata; poiché la convalida viene eseguita al momento della creazione del grafico, omettiamo i controlli di convalida del formato in fase di esecuzione.

Nota: questa operazione non è intesa per essere chiamata dall'utente; invece gli utenti dovrebbero chiamare direttamente `tf.einsum`. È un Op nascosto usato da `tf.einsum`.

Le operazioni vengono applicate agli input in base alle seguenti regole:

(a) Diagonali generalizzate: per le dimensioni di input corrispondenti alle etichette degli assi che appaiono più di una volta nello stesso pedice di input, prendiamo la diagonale generalizzata (`k`-dimensionale). Ad esempio, nell'equazione "iii-> i" con forma di input "[3, 3, 3]", la diagonale generalizzata sarebbe composta da elementi "3" agli indici "(0, 0, 0)", "(1 , 1, 1) "e" (2, 2, 2) "per creare un tensore di forma" [3] ".

(b) Riduzione: gli assi corrispondenti alle etichette che appaiono solo in un pedice di input ma non in quello di output vengono sommati prima della contrazione del tensore. Ad esempio, nell'equazione "ab, bc-> b", le etichette degli assi "a" e "c" sono le etichette degli assi di riduzione.

(c) Dimensioni batch: gli assi corrispondenti alle etichette che compaiono in ciascuno degli indici di input e anche nell'indice di output costituiscono le dimensioni del batch nella contrazione del tensore. Anche le etichette degli assi senza nome corrispondenti ai puntini di sospensione ("...") corrispondono alle dimensioni del batch. Ad esempio, per l'equazione che denota la moltiplicazione della matrice batch, "bij, bjk-> bik", l'etichetta dell'asse "b" corrisponde a una dimensione batch.

(d) Contrazione: in caso di einsum binario, gli assi corrispondenti alle etichette che compaiono in due diversi input (e non nell'output) sono contratti l'uno contro l'altro. Considerando di nuovo l'equazione di moltiplicazione della matrice batch (`bij, bjk-> bik`), l'etichetta dell'asse contratto è` j`.

(e) Espandi diagonale: se gli indici di output contengono etichette ripetute (esplicite) degli assi, viene applicata l'operazione opposta di (a). Ad esempio, nell'equazione `i-> iii`, e input shape` [3] `, l'output di shape` [3, 3, 3] `sono tutti zeri, ad eccezione della diagonale (generalizzata) che è popolata con valori dall'input. Nota: questa operazione non è supportata da `np.einsum` o` tf.einsum`; è fornito per abilitare il calcolo del gradiente simbolico di `tf.einsum`.

Gli indici di output devono contenere solo etichette che compaiono in almeno uno degli indici di input. Inoltre, tutte le dimensioni mappate sulla stessa etichetta dell'asse devono essere uguali.

Qualsiasi pedice di input e output può contenere al massimo un singolo puntino di sospensione (`...`). Questi puntini di sospensione vengono mappati su dimensioni che non corrispondono a nessuna etichetta dell'asse con nome. Se due ingressi contengono puntini di sospensione, vengono trasmessi secondo le regole di trasmissione NumPy standard (http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html).

Le dimensioni trasmesse vengono inserite nella posizione corrispondente dei puntini di sospensione nel pedice di output. Se le dimensioni trasmesse non sono vuote e gli indici di output non contengono puntini di sospensione, viene generato un errore InvalidArgument.

Metodi pubblici

Uscita <T>
asOutput ()
Restituisce la maniglia simbolica di un tensore.
statico <T> Einsum <T>
create ( ambito ambito, input < Operando <T>> iterabile, equazione di stringa)
Metodo Factory per creare una classe che avvolge una nuova operazione Einsum.
Uscita <T>
uscita ()
Tensore di output con forma dipendente da "equazione".

Metodi ereditati

Metodi pubblici

output pubblico <T> asOutput ()

Restituisce la maniglia simbolica di un tensore.

Gli input per le operazioni TensorFlow sono output di un'altra operazione TensorFlow. Questo metodo viene utilizzato per ottenere un handle simbolico che rappresenta il calcolo dell'input.

public static Einsum <T> create ( Scope scope, Iterable < Operand <T>> input, String equation)

Metodo Factory per creare una classe che avvolge una nuova operazione Einsum.

Parametri
scopo ambito attuale
ingressi Elenco di 1 o 2 tensori.
equazione Stringa che descrive l'operazione Somma di Einstein; nel formato di np.einsum.
ritorna
  • una nuova istanza di Einsum

output pubblico <T> output ()

Tensore di output con forma dipendente da "equazione".