Einsum

classe finale pubblica Einsum

Contrazione del tensore secondo la convenzione di Einstein sulla sommatoria.

Implementa la contrazione e la riduzione generalizzata del tensore. Ogni tensore di input deve avere un pedice di input corrispondente che appare nel lato sinistro separato da virgole dell'equazione. Il lato destro dell'equazione è costituito dal pedice di output. Gli indici di input e di output devono essere costituiti da zero o più etichette di assi con nome e al massimo un puntino di sospensione (`...`).

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

Nota: questa operazione non è destinata ad essere richiamata dall'utente; invece gli utenti dovrebbero chiamare direttamente tf.einsum . È un Op nascosto utilizzato da tf.einsum .

Le operazioni vengono applicate agli input secondo le seguenti regole:

(a) Diagonali generalizzate: per le dimensioni di input corrispondenti alle etichette degli assi che compaiono 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 "3" elementi negli 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 compaiono 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 dei pedici di input e anche nel pedice di output costituiscono le dimensioni batch nella contrazione del tensore. Anche le etichette degli assi senza nome corrispondenti ai puntini di sospensione (`...`) corrispondono alle dimensioni 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 appaiono in due diversi input (e non nell'output) vengono contratti l'uno rispetto all'altro. Considerando nuovamente l'equazione della moltiplicazione della matrice batch (`bij,bjk->bik`), l'etichetta dell'asse contratto è "j".

(e) Espandi diagonale: se gli indici di output contengono etichette degli assi ripetute (esplicite), viene applicata l'operazione opposta di (a). Ad esempio, nell'equazione "i->iii" e nella forma di input "[3]", l'output della forma "[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 ; viene fornito per consentire 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 punto di sospensione (`...`). Questi puntini di sospensione vengono mappati rispetto a dimensioni che non corrispondono ad alcuna etichetta dell'asse denominato. Se due input 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 nell'indice di output. Se le dimensioni trasmesse non sono vuote e gli indici di output non contengono puntini di sospensione, viene generato un errore InvalidArgument.

Costanti

Corda OP_NAME Il nome di questa operazione, come noto al motore principale di TensorFlow

Metodi pubblici

Uscita <T>
comeuscita ()
Restituisce l'handle simbolico del tensore.
statico <T estende TType > Einsum <T>
create (ambito di applicazione , ingressi Iterable< operando <T>>, equazione di stringa)
Metodo factory per creare una classe che racchiude una nuova operazione Einsum.
Uscita <T>
produzione ()
Tensore di uscita con forma dipendente dall'"equazione".

Metodi ereditati

Costanti

Stringa finale statica pubblica OP_NAME

Il nome di questa operazione, come noto al motore principale di TensorFlow

Valore costante: "Einsum"

Metodi pubblici

Uscita pubblica <T> asOutput ()

Restituisce l'handle simbolico del 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.

creazione pubblica statica Einsum <T> (ambito ambito , ingressi Iterable < operando <T>>, equazione stringa)

Metodo factory per creare una classe che racchiude una nuova operazione Einsum.

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

Uscita pubblica <T> uscita ()

Tensore di uscita con forma dipendente dall'"equazione".